Skip to content

Latest commit

 

History

History
87 lines (77 loc) · 4.54 KB

1.텍스트 처리.md

File metadata and controls

87 lines (77 loc) · 4.54 KB

head : 기본 10줄 출력

  • 문서 내용의 앞부분 출력
    • c : NUM byte만 출력
    • n : 라인 수 출력, -옵션을 추가로 부여하면 밑에서부터 그만큼 빼고 출력
    • 예 : cat /etc/passwd | head –n -5 : 문서 전체에서 밑에서 5줄 빼고 전체 출력
    • cat /etc/passwd | head –n 15 : cat은 전체 출력이지만 파이프로 head를 할 수 있다. (15줄만 출력)

tail - head의 반대, 기본 끝에서 부터 10줄

  • 문서 내용의 뒷부분 출력
    • c : NUM byte만 출력
    • n : 라인 수 출력 (tail에서는 +옵션을 줘야한다), +5를 준다면? 5번째 줄부터 끝까지 출력한다.
    • f : 추가 되는 내용을 기다리다가 추가되는 내용을 append 시켜줌
    • F : 삭제 되었다가 같은 이름으로 다시 생기는 경우, re-open해서 follow(-f옵션)한다.
    • 예 : tail /etc/passwd -n 1 : 마지막 1줄 출력
    • tail /etc/passwd -n +5 : 5번째 줄부터 끝까지 출력

wc - word count

  • line/word/byte count 출력
    • l : 라인수 만 출력 (파일이 몇 줄인지 출력)
    • 예 : wc /etc/passwd /etc/resolv.conf : 각각의 정보(라인/워드/바이트)를 보여주며 토탈정보도 보여준다.
    • wc -l FILENAME | cut -d ' ' -f 1 # 라인수만 획득
    • wc –l FILENAME | awk ‘{ print $1 }’ # 라인수만 획득

nl

  • 파일 내용을 라인 넘버와 함께 출력
    • cat FILENAME | nl : 그냥 nl과 같은 결과가 나온다
    • -ba : 모든 라인에 대해 라인 넘버링, 즉 공백인 라인도 라인으로 counting 하여 출력한다.

sort

  • 파일의 내용을 정렬하여 출력 : 기본은 abcd.. 순서로 오름차순 정렬
    • k : 특정 컬럼을 기준으로 정렬
    • t : 어떤 delimeter(구분자)을 기준으로 정렬할 건지
    • n : 숫자로 인식하여 정렬 (숫자 크기에 따른 오름차순)

uniq

  • 중복된 내용 제거하고 출력(기본 동작은 연속으로 중복된 것만 제거하고 출력)
    • d : 중복된 내용만 출력
    • u : 중복되지 않은 내용만 출력
    • i : 대소문자 무시해서 중복된 내용 제거하고 출력

cut

  • 컬럼 잘라내기
    • f : 특정 컬럼을 선택하여 잘라내기
    • d : 어떤 delimeter(구분자)를 기준으로 자를건지(기본값은 탭)
    • b : 바이트 단위로 잘라내기
    • 예 : head /etc/passwd | cut -d ' ' -f 1
      • delimeter는 공백, 첫번째 컬럼만 cut하여 출력
    • --output-delimiter='>' : 구분자를 '>'로 바꾸어서 출력

tr : translate

  • 어떤 내용을 변환(translate)한다.
  • 기본 사용법: tr [OPTION]... SET1 [SET2]
    • d, --delete : SET에 맞는 것들을 지워주고, 안지워진 부분을 출력
    • 예 : head /etc/passwd | tr -d ':'
      • 콜론을 다 지우고 출력
    • head /etc/passwd | tr ':' '%'
      • 콜론을 %로 바꾸어서 출력

sed

  • 파일의 내용을 output으로 출력하는데 있어서 그 내용을 editing한다.
    • {RANGE}p : range 내의 라인을 출력
    • {RANGE}d : range 내의 라인을 삭제
    • /SEARCHPATTERN/p : SEARCHPATTERN과 매치되는 라인을 출력
    • /SEARCHPATTERN/d : SEARCHPATTERN과 매치되는 라인을 삭제
    • s/REGEX/REPLACE/ : REGEX에 매치되는 부분을 REPLACE로 교체(substitute)
    • 예 : head /etc/passwd | sed '1,3p' : 첫번째 줄부터 세번째 줄까지 print한다.
      • 실제로는 1~3줄이 두번씩 출력된다. (stream이기 때문에 한줄씩 읽으면서 실행되기 때문에)
        • 이럴때는 -n을 더 부여한다. (head /etc/passwd | sed -n '1,3p')
    • 예 : head /etc/passwd | sed '1,3d‘ : 1~3줄을 지우고 출력(-n옵션을 부여하지 않아도 원하는대로 출력된다)

awk : 유틸리티보단 script language이다.

  • 텍스트 처리 script language
  • 문법 : awk options 'selection _criteria {action }' input-file
    • F : delimeter 지정
  • 주요 내장 변수 : 문법에서 작은 따옴표안에 들어가는 express에 사용되는 변수
    • $1, $2, $3 : n번째 필드
    • NR : 레코드의 갯수(행 기준으로 출력)
    • NF : 필드의 갯수
    • FS : 필드 separator
    • RS : 레코드 separator
    • OFS : Output 필드 separator
    • ORS : Output 레코드 separator
  • cut보다 awk가 필드 separating하면서 다른작업을 같이할 수 있어서 더 많이 사용한다.
  • 예 : wc /etc/passwd | awk '{ print $1 }' : 첫번째 필드 출력
  • 예2 : head /etc/passwd | awk -F: '{ print $1 }' :를 구분자로 첫번쨰 필드만 출력
  • 예3 : head /etc/passwd | awk -F: '/sy/' '{ print $1 }' :를 구분자로 'sy'가 포함된 첫번쨰 필드 출력