[Mac] 리눅스 명령어 — 텍스트 처리

Linux commands for Mac

naljin
5 min readJan 28, 2021

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 로 바꿔서 출력

출처

--

--