head
문서 내용 앞 부분 출력
파라미터를 주지 않으면 앞 10줄 출력
자주 사용되는 옵션
- -c, –bytes # num byte만 출력
- -n, –lines # num line 만 출력
e.g.
- head ‘file.type’
- head -n ‘num’ ‘file.type’
-
cat ‘file.type’ head -n ‘num’
tail
문서 내용 뒷 부분 출력
파라미터를 주지 않으면 끝 10줄 출력
자주 사용되는 옵션
- -c, –bytes = [+]NUM # print num byte
- -n, –lines = [+]NUM # print num line
-
-f, –follow[={name desc}] # 추가되는 내용 대기하다가, 추가 내용은 append 후 출력 - -F # truncate > Re-Open > Follow ( using log rotate file )) # 파일이 지워졌다가 생겨도 따라감
e.g.
-
+5 = 5번째 줄 부터 끝까지 출력
- tail -n ‘num’ ‘file.type’ # 뒤에서 ‘num’번째 줄 출력
-
cat ‘file.type’ tail -n ‘num’ # 상동
WC (Word Count)
line/word/byte count 출력
라인의 수가 특정 목적을 가진 정보 수가 되는 경우
자주 사용되는 옵션
- -l # 라인수만 출력
e.g.
- wc ‘file.type’ == wc -clmw ‘file.type’ # line word byte count ‘file.type’
- wc *.py # 폴더 내 py파일 모두 확인
- wc -l ‘file.type’ # line 수
-
wc -l ‘file.type’ awk ‘{print $1}’
nl
파일 내용을 라인 넘버와 함께 출력
코드 첨부 후 설명할 때 유용함 ?
자주 사용되는 옵션
- -ba # 모든 라인 넘버링
- -v N # 시작 라인 넘버를 N으로 지정
- -s # 라인 넘버 출력 후 출력할 separator 지정
e.g.
-
nl ‘file.type’ == cat ‘file.type’ nl - nl -ba ‘file.type’
- nl -ba -s “:\t” ‘file.type’
sort
맥은 모르겠다
파일 내용 정렬 후 출력
자주 사용되는 옵션
- 위치 지정
- -k, –key=KEYDEF # key에 의한 정렬, 어떤 컬럼을 기준으로 정렬할 건지 /
- 숫자 한 개만 작성하면 그 부분부터 끝까지
- 한 개의 열만 하려면 쉼표로 구분해 같은 숫자 넣어주기
- n 번째 우선순위 지정 > -k 5,5 -k 2,2
-
e.g. ls -al sort -k 5 -n
- -t, –field-separator # 필드 구분자 (기본값 = 공백), 하나의 기준으로 컬럼을 나누어줌
- -k, –key=KEYDEF # key에 의한 정렬, 어떤 컬럼을 기준으로 정렬할 건지 /
- 정렬 기준 (sort ‘file’ -x)
- -f, –ignore-case
- -g, –general-numeric-sort
- -n, –numeric-sort # 123보다 91이 먼저 나오게 됨
- -r, –reverse # 내림차순 정렬
- -u, –unique # 중복 삭제
- 옵션
- –debug #어디 기준으로 정렬했는지 가시화
e.g.
-
cat ‘file.type’ sort -
cat ‘file..type’ sort -t’구분자’ -k ‘정렬키-행’ -n -
cat ‘file..type’ sort -t’구분자’ -k ‘정렬키-행’ -n -debug
uniq
중복 내용 제거 후 출력
연달아 중복인 부분만 삭제 » sort 명령어랑 같이 사용
자주 사용되는 옵션
- -d, –repeated # 중복된 내용만 출력
- -u, –unique # 중복되지 않은 내용만 출력
- -i, –ignore-case # 대소문자 무시
e.g.
-
cat ‘file.type’ uniq nl -ba # 중복된 내용만 코드 번호를 붙여서 출력 -
sort ‘file.type’ uniq nl -ba -
grep “search” file awk -F: ‘‘{print $1}’ uniq
cut
컬럼 잘라내기
자주 사용되는 옵션
- -b, –bytes=LIST # byte 선택
- -c, –characters=LIST # character 선택
- -f, –fields=LIST # 필드(컬럼) 선택
- -d, –delimiter=DELIM # tab 대신 사용할 구분자 지정 탭이 아닌 다른 구분자로 지정되어있는 경우 반드시 입력
- –complement # 선택 반전
- –output-delimiter=STRING # 출력시 사용할 구분자 지정
e.g.
-
head ‘file.type’ cut -d: -f 1, 7 –output-delimiter=”>” # 딜리미터 변경 -
ls -al head cut -b 1 #각 줄의 첫 글자만 나옴 -
ls -al head cut -b 2-4 # rwx.. 등 권한을 볼 수 있음 -
ls -al head cut -b -10 # 처음부터 10바이트까지 -
ls -al head cut -b 11- # 11부터 끝 바이트까지
tr (translate)
내용 변환
문서 특수 캐릭터 삭제 시에 자주 사용
tr [OPTION] … SET 1 [SET 2]
자주 사용되는 옵션
- -c, -C, –complement
- -d, –delete
- SET
- CHAR1 - CHAR2 # char1부터 char2까지 (a to z)
- [:alnum:] # 문자 + 숫자
- [:alpha:] # 문자
- [:blank:] # 공백
- [:space:] # 공백 + newline
- [:digit:] / [:xdigit:] # 10진수 숫자 / 16진수 숫자
- [:lower:] / [:upper:]
e.g.
- tr -d SET1 # set1에 맞는 부분 삭제 후 지워지지 않는 것들 출력
-
cat ‘file.type’ tr ‘:’ ‘%’ -
head ‘file.type’ tr [:lower:] [:upper:] # 출력될 모든 소문자를 대문자로 변경
sed
stream editor
파일 내용을 출력 전에 옵션대로 편집 후 출력
자주 사용되는 옵션
- {RANGE}p # range 내 라인 출력
- {RANGE}d # range 내 라인 삭제
- /SEARCHPATTERN/p # SEARCHPATTERN과 매치되는 라인 출력
- /SEARCHPATTERN/d # SEARCHPATTERN과 매치되는 라인 삭제
- s/REGEX/REPLACE # REGEX 매치 부분을 REPLACE로 교체 -substitute
- -n # 기본 출력 부분 제외 - 보통 print 시 많이 사용
- ’/,+num p’ # 상대적으로 몇 번째 줄까지 출력 할 건지
e.g.
-
head ‘file.type’ sed ‘2,5p’ # head 부분 출력 + 라인 사이에 sed 옵션이 들어가게 됨 -
head ‘file.type’ sed -n ‘2,5p’ # 기본 출력 부분 제외 -
head ‘file.type’ sed ‘1,5d’ -
cat ‘file.type’ sed -n ‘/kwarg/p’ -
cat ‘file.type’ sed ‘s/:/$/g’ # g 옵션 : 한 라인에 매치되는 모든 부분을 변경 -
cat ‘file.type’ sed -n ‘/kwarg/,10p’ # 검색 문자에서 10번째까지 출력 -
cat ‘file.type’ sed -n ‘/kwarg/,+2p’ # 검색 문자부터 2번째 줄을 더 출력
awk
유틸리티라기 보다는 텍스트 처리 script language
syntax : awk options ‘selection _criteria {action }’ input-file
파일 내용을 처리하는 거기에 input_file 이 필요하지만, 파이프를 통해 호출하는 경우는 input_file 없음
자주 사용되는 옵션
- -F # Field separator 지정
주요 내장 변수
- $1, $2, $3 # Nth field. wc할 때 awk field separator를 공백으로 해서 $1, $2…
- NR # number of records
- NF # number of fields
- FS # field separator (default ‘white space’)
- RS # record separator (default ‘new line’)
- OFS # Output Field Separator
- ORS # Output Record Separator
e.g.
-
wc ‘file.type’ awk ‘{print $1}’ # 첫 번째 부분 출력 -
head ‘file.type’ awk -Fs ‘{print $1}’ -
head ‘file.type’ awk -Fs ‘/kwarg/ {print}’ # 검색 후 라인 전체 출력 -
head ‘file.type’ awk -Fs ‘/kwarg/ {print NR, $1 }’ # 검색 인자가 몇 번째 라인인지 출력 -
head ‘file.type’ awk -Fs ‘{print NR “==>” $1 }’ -
head ‘file.type’ awk -Fs ‘{print NR “==>” $1, NF }’ # 필드가 몇 개인지 알려줌, 언어라서 loop 도 돌 수 있음.
사담
우분투 영상에서 ls -al | sort -k 5
는 숫자로 인식하지 않아서 -n을 붙여줘야 했는데, 맥은 아닌가보다…