[Mac] 리눅스 명령어 — 텍스트 처리
head
문서 내용의 앞부분 출력. (디폴트 10줄)
head myFile
옵션
-c [num] : 문서의 num byte 만큼 앞부분 출력
head -c 5 myFile
-n [num] : 문서의 num line 만큼의 앞부분 출력
head -n 5 myFile
tail
문서 내용 뒷부분 출력. (디폴트 10줄)
tail myFile
옵션
-n [num] : 문서의 num line 만큼의 뒷부분 출력
tail -n 5 myFile
-n +[num] : 문서의 num line 부터 끝까지 출력
tail -n +5 myFile
-F : 명령어가 끝나지 않고 계속 내용이 추가되길 기다리다가, 추가 되면 append 해서 출력. 로그 파일 작성할때 많이 사용. 파일 내용이 싹 갈아엎어져도 다시 추적한다는 점에서 -f
옵션보다 강력.
tail -F myFile
tail -f /var/log/syslog
는 시스템 관리자가 즐겨 사용하는 유용한 명령어
wc (word count)
문서의 line / word / byte의 개수 출력
wc myFile
옵션
-l : line수만 출력
wc -l myFile
-L : line 중 가장 긴 문자열의 개수
wc -L myFile
여러 파일 정보 같이 출력할 수도 있음
wc myFile myFile2
nl (numbering lines)
문서 내용을 라인 넘버와 같이 출력
nl myFile
옵션
-ba : 모든 라인에 대해 라인 넘버링 (body numbering all). 즉 공백까지 라인 넘버링
nl -ba myFile
-v [num] : 시작 라인 넘버를 num으로 지정
nl -v 10 myFile
sort
라인을 정렬해서 출력
sort myFile
옵션
-r : 내림차순 출력 (reverse)
sort -r myFile
-n : 숫자 기준으로 출력 (numeric) . 문자 기준으로 정렬하면 123 -> 90 이지만, 숫자 기준은 90 -> 123
sort -n myFile
-u : 똑같은 라인 내용 있을때 하나만 출력 (unique)
sort -u myFile
-k [num] : num번째 column key을 기준으로 정렬 수행. 기본으로 띄어쓰기에 의해 column 구분. 구분자 지정은 -t 옵션 사용.
sort -k 2 myFile
: 라인별 띄어쓰기를 기준으로 두번째 column 출력
sort -t: -k 2 myFile
: 라인별 문자 : 를 기준으로 두번째 column 출력
-f : 대소문자 무시 (ignore case). C a b c -> a b C c
sort -f myFile
uniq
중복 라인 내용 제거 후 출력. 단 연속적인 라인만 중복으로 인식하기 때문에 sort 랑 같이 많이 쓰임. (우선 정렬 후 uniq 먹임)
uniq myFile
옵션
-d : 중복된 라인만 출력 (repeated)
uniq -d myFile
-u : 중복되지 않은 라인만 출력 (unique)
uniq -u myFile
-i : 대소문자 무시 (ignore case)해서 중복 라인 비교
uniq -i myFile
cut
라인별로 잘라낸 특정 내용만 출력.
옵션
-f [num] : num번째 컬럼 선택 (field). 기본으로 tab에 의해 column 구분. 구분자 지정은 -d 옵션 (delimiter) 사용.
cut -f 1 myFile
: 라인별 기본 tab 기준 구분자로 첫번째 컬럼 출력
cut -d ' ' -f 1 myFile
: 라인별 띄어쓰기 구분자로 첫번째 컬럼 출력
-b [num] : num번째 byte 선택.
cut -b 1 myFile
cut -b 1-4 myFile
: 라인별 1-4 번째 byte 출력
cut -b -4 myFile
: 라인별 처음부터 4번째 byte 출력
cut -b 4- myFile
: 라인별 4번째 부터 마지막 byte 출력
tr (translate)
라인별 내용 변환하기.
cat myFile | tr 'a' 'b'
: a를 b로 변경해서 출력. | 는 명령어를 이어주는 pipe command
옵션
-d [set] : set에 매치되는 것들을 지우고 출력
cat myFile | tr -d '\'
: \ 지워서 출력
sed (stream editor)
파일 내용 라인 단위로 수정 가능. (출력, 삭제, 변환 등)
옵션
-n [range]p : range 내의 라인 출력 (print). 만약 -n 옵션 없으면 기본 라인에 추가 출력 됨.
sed -n 1,3p myFile
[range]d : range 내의 라인 삭제 (delete) 후 출력
sed 1,3d myFile
-n /[searchPattern]/p : searchPattern 과 매치되는 라인 출력. 만약 -n 옵션 없으면 매칭된 라인 추가 출력 됨.
sed -n /hello/p myFile
/[searchPattern]/d : searchPattern 과 매치되는 라인 삭제 후 출력
sed /hello/d myFile
s/[regex]/[replace]/g : regex에 매치되는 부분을 replace로 대치 (substitute). 마지막 g 없으면 맨 앞 하나의 regex만 바뀜.
sed s/hello/world/g myFile
: 모든 hello 를 world 로 바꿔서 출력