4. 텍스트 처리_1: cat;head;tail;cut;wc;sort;uniq;tr;tac;rev
텍스트 처리는 작업입니다. 모든 시스템 관리자가 자주 접하게 되는 내용입니다. 핵심 내용은 여러 도구를 유연하게 결합하여 작업을 완료하는 것입니다
tail -n 3 /etc/passwd --파일의 마지막 세 줄을 읽습니다. /etc/passwd
# tail -c 3 /etc/passwd --/etc/passwd 파일의 마지막 3바이트를 읽습니다.
# tail -c +28 /etc/passwd --28번째 바이트부터 파일 끝까지 읽습니다. 헤더의 27바이트를 삭제합니다.
# tail -f /etc/passwd --끝 부분의 내용을 추적합니다. 로그 파일의 변경 사항을 관찰하는 데 자주 사용되는 파일 변경 사항, 매우 실용적입니다.
4. cut - 이 기능은 awk와 비슷하지만 awk만큼 강력하고 복잡하지는 않습니다. 데이터를 열로 출력하려는 경우 awk를 사용하세요. 자주 사용되며, 자르는 시간이 많지 않습니다
공통 옵션 :
-d --구분자 정의
-b --지정된 위치의 바이트를 출력
- c --지정된 위치의 문자 출력
# echo "a;b;c d;e" | cut -d ";" -f1,3,4 -- -d는 구분 기호를 정의합니다(기본값은 TAB). - f 출력 해당 필드 정의
# cat -n /etc/passwd | cut -d $'n' -f1,3-5,7 -- 개행 문자를 구분 기호로 사용
# echo 저는 중국인입니다 | cut -b1-3 -- -b는 지정된 위치에 바이트를 출력합니다. utf8 한자는 3바이트를 차지합니다.
# echo I am Chinese 컷 -c2-4 -- -c -b와의 차이점은 영어가 아닌 문자를 처리할 때입니다.
# echo 용감한 중국어를 하세요 | cut -b1-2,9 -- "가짜" 문자를 출력합니다
# echo -n Brave Chinese | xxd -- 3바이트 1, 2, 9는 다음과 같습니다. e581 87
# echo -n false | xxd -- 그리고 "false"도
5. wc - 개수를 계산합니다. 데이터의 바이트, 문자, 단어 및 줄
공통 옵션:
-c - 바이트 수 계산
-m - 문자 수 계산
-w -- 계산 단어 수
-l -- 줄 수 계산
# echo -n 저는 중국인입니다 | wc -c -- -c 바이트 수 계산, 5 utf8 중국어는 15바이트를 차지합니다
# echo -n 나는 중국인이다 | wc -m -- -m은 문자 수를 계산합니다. -c와의 차이점은 cut
# echo -n 나는 중국인입니다 | -- -w는 단어 수를 세는데 구분 기호가 없습니다. 5개의 한자가 한 단어로 계산됩니다. 이는 소위 중국어의 "단어"와 다릅니다
# echo -n 대문자 CHINESE | w --두 단어
# echo -n 대문자 CHINESE | wc -c --17 영어 바이트, -n 제외 18 (개행 문자가 있기 때문에)
# echo -n 대문자 CHINESE | wc -m --영문 17자, -n이 없으면 18자(개행 문자가 있기 때문)
# wc -l /etc/passwd -- -l은 줄 수를 계산합니다
6. sort -- 행별로 파일 정렬
공통 옵션:
-t --구분 기호 지정
-k --정렬 필드 지정
-u -- 중복된 줄 제거
-n, -h --값으로 정렬
-r --역방향 정렬
# cut -d ":" -f7 /etc/passwd | -u 중복된 줄 제거
# echo -e "1n2n10" | sort
# echo -e "1n2n10" | sort -n -- -n 숫자 값으로 정렬, K, M, G 등을 처리할 수 없습니다.
# ls -lh | tail -n +2 | sort -k5,5n -- -k는 정렬할 필드를 지정합니다.
# ls -lh | tail -n +2 | 숫자 값으로 정렬하는 경우 K, M, G와 같은 단위 문자를 처리할 수 있습니다.
# head -4 /etc/passwd | sort -t: -k7,7 -- -t는 필드 구분자로 콜론을 사용합니다. 7 필드 정렬
# head -4 /etc/passwd | sort -t: -k7,7 -k3,3n -- 먼저 7번째 필드로 정렬하고, 7번째 필드가 동일하면 3번째 필드로 정렬합니다. field
# echo -e "1n2n3" | sort -nr -- -r 정렬 반전
# head -4 /etc/passwd | sort -t: -k7,7 -k3,3nr -- 3번째 반전 하나의 필드 정렬, 두 필드를 동시에 뒤집을 수도 있습니다
7. uniq --연속 중복 행 제거
공통 옵션:
-c --중복 행 수 계산
# echo -e "1n1n2n1" | uniq -- 두 개의 1이 불연속이므로 결과에는 여전히 두 개의 1이 있습니다.
# echo -e "1n1n2n1" | sort -u -- 중복을 제거하기 위해 정렬이 연속될 필요는 없습니다.
# cut -d: -f7 /etc/passwd | sort | uniq -c -- sort 명령 예를 기반으로 다양한 로그인 쉘의 발생 횟수를 계산합니다.
8, tr --변환, 삭제, 축소 같은 문자
일반적으로 사용되는 옵션:
-d --delete, 일치하는 모든 문자 삭제
-s --reduce, 같은 문자 줄이기
형식: tr SET1 SET2
참고: 세트 1의 문자를 세트 2의 해당 문자로 변환하므로 원칙적으로 두 세트의 문자 수는 동일해야 합니다. 두 세트 문자 수가 같지 않으면 프로그램에서 오류가 발생하지 않습니다. 이 경우 결과에 주의하세요. 핵심 사항:
a 및 tr은 두 세트에 어떤 문자가 있는지 상관하지 않고 단순히 해당 위치의 문자를 하나씩 교체합니다.
b 및 tr은 단일 문자를 교체하고 문자열
# echo abc | tr a-z A-Z -- 26개의 소문자를 해당 대문자로 변환
# echo abc | tr ab BA -- a와 b를 각각 B와 A로 변환
# echo 좋은 사람들 좋은 일을 하세요 | tr 좋거나 나쁘다 - "good"은 "bad"로 변환됩니다
# echo abcdefg | tr a-z AB --세트 2가 더 짧고, 프로그램은 자동으로 세트 2의 마지막 문자를 사용합니다
# echo abcdefg | tr a-b A-Z -- 세트 2가 길면 프로그램이 자동으로 세트 2를 짧게 자릅니다
# echo Abc | tr a-zA-Z A-Za-z --영어 글자 크기를 반전시킵니다
# echo hello world | tr -d ow -- -d 일치하는 모든 문자 삭제
# echo 0123456789 | tr -d 13579
# tr -d '
# head -c 3m bigfile > file1 --첫 번째 3M 데이터를 file1로 가져오기
# tail -c 4m bigfile > file3 --마지막 3M 데이터를 file3
# head -c 6m bigfile | c 3m > file2 -- 중간 4M 데이터를 file2로 가져옵니다
# ls -lh file*
# cat file1 file2 file3 > cat을 사용하여 세 개의 파일을 새로운 대용량 파일로 병합합니다
# md5sum newbigfile bigfile --명령을 사용하여 이전 대용량 파일과 새 대용량 파일의 md5sum 값을 비교