Linux - Day03 (echo, find, grep, sed, awk, tr, cut, bc, xargs)

skyju·2022년 2월 6일
0

Linux

목록 보기
3/5

echo
시스템의 환경변수 또는 입력 내용을 화면에 출력한다.

echo [option] [문자열]

find
주어진 조건을 검색해서 해당하는 파일을 찾는다.

find [path] [option] [작업]

주요 옵션

  • -name 'name' : 'name'이 파일명인 파일을 찾는다.
  • -user name : 'name' 유저 소유의 파일을 찾는다.
fint . -name "*.txt"

txt 확장자인 파일만 찾겠다는 뜻

  • -type [bcdfls] : 지정된 형식의 파일을 찾는다. (f가 file, d가 directory)
  • -print : 표준출력으로 검색된 파일명을 출력한다.
  • -exec command {} \; : 찾은 각 파일에 대해 지정된 command를 수행한다.
  • -ok command {} \; : 찾은 각 파일에 대해 실행 여부를 사용자에게 확인한 후 명령을 실행한다.

basename
경로와 확장자를 제거한 순수 파일 이름만 돌려받는 명령어.

basename [경로를 포함한 파일 이름] [확장자]

[확장자] 란에는 선택옵션으로 확장자까지 제거하고 싶을 때 사용한다.
작성하면 이 확장자로 파일이름의 맨 마지막에 오는 문자열은 삭제한다.

grep
패턴에 매칭되는 라인을 보여준다.
주로 문자열 검색할 때 사용한다.

grep [option] pattern [file...]

옵션이 매우 다양함.
cf) egrep

sed(stream editor)
텍스트를 분해하거나 변환하기 위한 프로그램.
vi도 stream editor중 하나다.

  • 치환 명령어
sed 's/regexp/replacement/g' input_filename > output_filename

이때, g는 glogal flag이다.

  • 삭제 명령어
    비어있거나 공백만 있는 줄을 삭제해보자.
sed '/^ *$/d' input_filename

awk
원본 문서에서 패턴을 검사해 원하는 값을 얻는 명령어.
sed와 비슷한 기능을 한다고 할 수 있다.

파일 데이터에 레코드와 필드 값으로 접근하고 각 값을 조작하거나 데이터화 할 수 있다.

입력 데이터를 라인 단위로 접근한다 봤을 때, 라인을 레코드 넘버라고 보면 된다. (NR)

필드는 $1~$n 까지의 필드로 나뉜다.

awk [option] 'pattern { action... ex) print }' [ARGUMENT...]

-v 옵션을 통해 변수를 지정할 수도 있다.
""와 ''를 주의하여 사용하자.

tr(translate)
특정 문자를 삭제 혹은 변환하는 명령어.
-d 옵션으로 지정한 문자를 삭제할 수 있다.
더 많은 옵션은 검색하여 사용 권함.

tr [option] 문자열1 [문자열2]
  • 치환 예제
tr '\n' ','
  • 삭제 예제
tr -d '\n'

cut
파일에서 원하는 필드를 뽑아내는 명령어

cut [option] ... [file]
  • 옵션
    -d, --delimiter = DELIM : 기본 필드 구분자는 탭이지만 이외에 지정한 필드 구분자를 사용하고 싶을 때
    -f, --fields = LIST : 지정한 필드만을 출력한다.
    -S, --only-delimiter : 필드 구분자에 포함되지 않는 행은 출력하지 않는다.
  • 예제
cut -d '\t' -f2

bc
터미널에서 사용하는 대화형 계산기

bc [-lws] [file...]
  • 진수를 바꿔 계산하는 응용
echo 3+3 | xargs "obase=16;ibase=10" | bc

xargs
인자를 필터링해서 넘겨주고 명령어를 다시 조합하여 처리하는 명령어.

  • 현재 디렉터리의 파일을 한 행에 10개씩 출력.
ls | xargs -p -n 10 echo

오늘 간단히 축약하여 작성한 내용의
자세한 내용을 참고할 블로그를 추천합니다.
https://recipes4dev.tistory.com/

profile
https://github.com/skyju

0개의 댓글