Linux/리눅스 시스템 관리

01_02_06_텍스트 관련 명령어

바우네 2022. 3. 8. 21:11
반응형

텍스트 관련 명령어

텍스트 관련 명령어에는 cat, head, tail, more, less, grep, wc, sort, cut, split 등이 있다.

cat

  • 텍스트 파일의 내용을 보거나 텍스트 파일을 다른 새로운 파일로 복사하거나 또는 기존의 텍스트 파일과 합치는 기능을 수행한다.
  • 형식: cat [option] file
  • 옵션
    • -b, --number-nonblank: 빈 줄을 제외하고 행 번호를 붙여준다.
    • -n, --number: 모든 줄에 행 번호를 붙인다.
    • -E, --show-ends: 각 줄의 끝에 '$'를 표시한다.
    • -T, --show-tabs: 탭 문자로 '^'로 표시한다.
    • -v --show-nonprinting: 인쇄 불가한 문자도 표시한다.
    • -A, --show-all: -vET 명령어와 동일하다.
    • -s, --squeeze-blank: 반복되는 빈 줄은 무시한다.
  • 예제
    • cat readme.txt와 cat < readme.txt
    • cat readme.txt readme2.txt
    • cat readme.txt > newreadme.txt
    • cat readme.txt >> another-readme.txt

head

  • 지정한 파일의 앞 부분을 출력한다. 옵션을 지정하지 않는다면 첫 10줄을 출력한다.
  • 형식: head [option] file
  • 옵션
    • -n, --lines: 출력할 줄 수 지정한다. 만약 숫자 앞에 '-'를 붙이면 모두 출력하되 지정한 바이트 수만큼 마지막에 출력하지 않는다.
    • -c, --type: 출력한 바이트 수를 지정한다. 만약 숫자 앞에 '-'를 붙이면 모두 출력하되 지정한 바이트 수만큼 마지막에 출력하지 않는다.
  • 예제
    • head readme.txt
    • head -n 5 readme.txt
    • head -5 readme.txt
    • head -n -5 readme.txt

tail

  • 지정한 파일의 끝 부분을 출력한다. 옵션을 지정하지 않으면 10줄만 출력한다. 보통 로그 파일이나 실시간 이벤트 확인 시 최근의 정보를 확인할 때 유용하다.
  • 형식: tail [option] file
  • 옵션
    • -n, --lines: 파일의 마지막에서 지정한 줄만큼 출력한다.
    • -c, --bytes: 파일의 마지막에서 지정한 바이트 수만큼 출력한다.
    • -f, --follow: 새로운 데이터가 들어올 때까지 모니터링한다. 데이터가 추가되면 출력하기를 반복한다.
-f 옵션에 의해 새로운 데이터를 기다리는 중

more

  • 텍스트 파일의 내용이 많을 때 한 페이지씩 보여주는 명령어이다.
  • 형식: more [option] file
  • 옵션
    • -num: 스크린에 한 번에 보여줄 줄 수를 설정한다.
  • 예제
    • more /etc/passwd
    • more -10 /etc/passwd
    • cat /etc/passwd | more

less

  • more 명령어와 같이 텍스트의 파일 내용을 페이지 단위로 보여주는 명령어이다. more 명령어와 달리 다양한 옵션을 제공한다. 또한 vi 명령어와 같이 프로그램 시작 전 텍스트 파일을 모두 읽어 메모리에 올리지 않기 때문에 프로그램 시작이 빠르다. 커서 키나 마우스 휠을 이용해서 화면 이동이 가능하고 vi에서 익숙한 명령어도 사용이 가능하다.
  • 형식: less [option] file
  • 옵션
    • -c, --clear-screen: 화면을 지우고 최상단부터 결과를 출력한다.
    • -s, --squeeze-blank-lines: 연속된 빈 줄을 합쳐 하나의 빈줄로 만든다.
    • -e: 파일 끝에서 한번 더 파일 끝으로 이동하면 자동으로 프로그램이 종료된다. 기본 동작은 'q' 명령어에 의해 종료된다. 'q'는 'quit'의 머리글자이다.
    • -N: 각 줄마다 행 번호를 함께 출력한다.
  • 예제
    • less /var/log/dmesg
    • less -N /var/log/dmesg
    • less +80 /var/log/dmesg

grep

  • 텍스트 파일을 한 줄식 읽어서 지정한 패턴과 일치하는 문자열을 보여주는 명령어이다.
  • 형식: grep [option] pattern file ···
  • 옵션
    • -b, --byte-offset: 지정한 패턴과 일치하는 줄의 offset을 줄 앞에 출력한다. 만약 -o 옵션과 함께 사용하면 패턴과 일치하는 위치마다 offset을 출력한다.
    • -c, --count: 패턴과 일치하는 줄이 몇 줄인지 표시한다.
    • -h, --no-filename: 파일 이름을 출력하지 않는다.
    • -I, --ignore-case: 패턴과 입력 파일 모두 대소문자를 구분하지 않는다.
    • -n, --line-number: 출력 결과에 1부터 시작하는 행 번호를 붙인다.
    • -v, --invert-match: 패턴과 매칭되지 않는 항목을 출력한다.
    • -w, --word-regexp: 패턴과 한 단어가 일치하는 줄을 출력한다.
    • -x, --line-regexp: 패턴과 전체 줄과 일치할 때 출력한다.
    • -l, --files-with-matches: 정상적인 파일 출력 대신에 파일 이름을 출력한다.
    • -r, --recursive: 지정한 디렉터리의 모든 파일에 대하여 패턴을 찾는다.
    • -o, --only-matching: 패턴과 일치하는 부분만 출력한다.
    • -E, --extende-regexp: 패턴을 확장 정규식으로 사용한다.
    • -F, --fixed-strings: 패턴을 고정된 문자열의 리스트로 사용한다.
  • 예제
    • grep msi /etc/passwd
    • cat /etc/passwd | grep msi
    • grep -r msi /home/
    • grep -w msi /etc/passwd
    • grep -w msi /etc/group
    • grep -c msi /etc/passwd
    • sudo grep -lr msi /etc

정규 표현식으로 패턴 지정

  • 특정한 규칙을 가진 문자열의 집합을 표현하는 일종의 형식 언어이다. 주로 문자열 검색 및 치환할 때 사용한다.
  • .: 하나의 문자와 매칭한다.
  • a*: a라는 문자가 없거나, a, aa, aaa 등 여러 개일 수 있다. 가령 ca*의 경우 cr, car, caar, caaar 등이 매칭된다.
  • [abc]: 어떤 문자열이라도 a, b, c 중 하나라도 포함하면 매칭된다.
  • [^abc]: 어떤 문자열이 a, b, c를 포함하고 있지 않으면 매칭된다.
  • [a-zA-Z]: a~z 또는 A~Z의 문자열만 매칭된다.
  • th(e|is|at): the, this, that과 같은 문자열과 매칭된다.
  • '^pattern': 지정한 패턴으로 줄이 시작하는 경우 매칭된다.
  • 'pattern$': 지정한 패턴으로 줄이 끝나는 경우 매칭된다.
  • '\<pattern': 지정한 패턴으로 단어가 시작하는 경우 매칭된다.
  • 'pattern\>': 지정한 패턴으로 단어가 끝나는 경우 매칭된다.
  • grep "[a-z]" readme: 소문자 a~z를 포함하는 줄을 모두 출력한다.

wc

  • 지정한 파일에 대해 줄, 단어, 문자의 개수 등을 셀 수 있는 명령어이다.(word count에서 나옴)
  • 형식: wc [option] file
  • 옵션
    • -l, --lines: 줄 수를 센다.
    • -w, --words: 단어의 개수를 센다.
    • -c, --bytes: 바이트 수를 센다.
    • -L, --max-line-length: 가장 긴 줄의 길이를 출력한다.

sort

  • 텍스트 파일을 한 줄씩 읽어서 정렬하는 프로그램이다.
  • 형식: sort [option] file
  • 옵션
    • -b, --ignore-leading-blanks: 공백은 무시한다.
    • -d, --dictionary-order: 오직 공백과 알파벳 문자만을 대상으로 정렬한다.
    • -f, --ignore-case: 대소문자 구분을 하지 않는다.
    • -r, --reverse: 정렬 결과를 반대로 출력한다.
    • -o, --output: 출력 결과를 지정한 파일에 저장한다.
    • -c, --check: 입력 값이 정렬되어 있는지 체크한다. 실제로 정렬하지는 않는다.
    • -n, --numeric-sort: 숫자를 문자가 아닌 숫자 값으로 정렬한다.
    • -u, --unique: 줄이 중복되면 처음 하나만 출력한다.
    • -M, --month-sort: 월 표시 문자를 인식하여 정렬한다. 가령 'JAN' < 'FEB' < ... < 'DEC'와 같은 순으로 정렬된다.
    • -t, --field-seperator: 이 옵션을 통해 필드 구분자를 변경할 수 있다. 기본 값은 공백이다.
    • -k, --key: 정렬할 필드를 정한다.
  • 예제
    • sort -r test
    • sort -r test -o test2
    • sort -k 3 test
    • sort -k 3.3 test

cut

  • 텍스트  파일을 한 줄 또는 여러 줄을 잘라낼 수 있는 명령어이다.
  • 형식: cut [option] file ...
  • 옵션
    • -c, --characters: 각 줄의 문자를 선택한다.
    • -f, --fields: 각 줄의 필드를 선택한다.
    • -d, --delimiter: 필드 구분자를 변경한다. 기본값은 TAB이다.
  • 예제
    • cut -c 1-3 test

split

  • 파일을 고정 크기의 여러 파일로 분할하는 명령어이다.
  • 형식: split [option] file [file_name]
  • 옵션
    • -b, --byte: 각 파일당 저장할 크기를 지정한다.
    • -C, --line-bytes: 각 파일당 행의 크기를 주어진 값에 맞춰서 쓴다.
    • -l, --lines: 각 파일당 줄 수를 지정한다.
반응형