1. 텍스트 처리
텍스트처리 명령어
head
문서 내용의 앞부분 출력, (옵션 생략 : 앞 10줄)
주로 쓰는 옵션
-c : 바이트만 출력
-n : 라인만 출력
$ head /etc/passwd
$ head /etc/passwd -n 15
$ head /etc/passwd -n -5
$ cat /etc/passwd | head
$ cat /etc/passwd | head -n 15
tail
문서 내용의 뒷부분 출력, (옵션 생략 : 뒤에서 10줄)
주로 쓰는 옵션
-c : 바이트만 출력
-n : 라인만 출력
-f
: 추가되는 내용 대기. 추가되는 내용은 append하여 출력 (ex, 로그 쌓이는 내용을 바로바로 출력 해줌)-F : 파일이 truncate 되는 경우, re-open하여 follow 함
-f,-F 옵션이 모니터링, 디버깅에서 자주 사용됨
$ tail /etc/passwd
$ tail /etc/passwd -n 3 # 뒤에서 3번째 줄
$ tail /etc/passwd -n +3 # 3번째 줄 부터 출력
$ echo haha > aa
$ tail aa -f
$ echo hihi >> aa
# rm aa 후에는 -f은 따라가지 않음
# rm aa -F : 삭제해도 바로바로 출력 되도록 됨
wc
line/word/byte 카운트 출력
주로 쓰는 옵션
-l : 라인수만 출력. ex) 한줄에 1개의 설정이 들어가는 경우의 파일 확인 등
# 줄수 워드수 byte
# 19 24 926 /etc/passwd력
# nl, ls 로 확인
$ wc /etc/passwd
# 각 파일별 정보와 마지막 줄 토탈(sum) 정보 출
$ wc /etc/passwd /etc/resolv.conf
# 라인수 출력
$ wc -l /etc/passwd
# 라인수만 출력
$ wc -l /etc/passwd | awk '{print $1}'
# cut 명령어 활용
$ wc -l /etc/passwd | cut -d ' ' -f 1
nl
파일을 내용을 라인넘버와 함께 출력
주로 쓰는 옵션
-ba : 모든 라인에 라인넘버링
-v N : 시작라인 넘버를 N으로 지정
$ nl /etc/passwd
$ nl -v 5 /etc/passwd
$ nl -ba /etc/passwd
sort
파일 내용 정렬하여출력
주로 쓰는 옵션
위치 지정
-k : key에 의한 정렬 수행
-t : 필드 구분자 (디폴트-공백)
정렬 기준
-n : 숫자
-r : 내림차순
-f : 무시할 형식지정
-u : 중복시 하나만 출력 -> distinct 같은 개념
$ cat /etc/passwd | sort -t: -k 3
$ cat /etc/passwd | sort -t: -k 3 -n
$ cat /etc/passwd | sort -k 2,2 -k 1,1 --debug
$ ls -al | sork -k 5
uniq
중복된 내용 제거하고출력
sort 명령어와 같이 사용되는 경우가 많음
주로 쓰는 옵션
-d : 중복된 내용만 출력
-u : 중복되지 않은 내용만 출력
-i : 대소문자 무시하고 중복여부 체크
$ uniq uniq_sample | nl
$ sort uniq_sample | uniq | nl
$ sort uniq_sample | uniq -i | nl
$ grep "r*" * | awk -F: '{print $1}' | uniq
cut
컬럼 잘라내기
주로 쓰는 옵션
-b : byte 단위로 선택
-c : character 단위로 선택
-f : 필드선택
-d : tab 대신 사용할 구분자 지정 (ex ':' 등)
$ wc /etc/passwd -l | cut -d ' ' -f 1
$ head /etc/passwd | cut -d: -f 1
$ head /etc/passwd | cut -d: -f 1,3
$ head /etc/passwd | cut -d: -f 1,3,7
$ head /etc/passwd | cut -d: -f 1,7 --output-delimiter=","
$ head /etc/passwd | cut -d: -f 1,7 --output-delimiter=">"
$ head /etc/passwd | cut -d: -f 1,7 --output-delimiter=" = "
# 그 바이트의 값
$ ls -al | head | cut -b 1
# 범위 지정하여 출력가능
$ ls -al | head | cut -b 1-5
$ ls -al | head | cut -b 10-20
$ ls -al | head | cut -b -20
$ ls -al | head | cut -b 1-
tr
어떤 내용을 변환(translate)한다.
기본 사용법 :
tr [option]... SET1 [SET2]
특정 문자를 지울때 자주 쓰임 (replace 처럼)
주로 쓰는 옵션
-c, -C, --complement :
-d, --delete : 삭제
SET
CHAR1-CHAR2
: CHAR1 부터 CHAR2 까지 (ex 'a-z')[:alnum:]
: 문자 + 숫자[:alpha:]
: 문자[:blank:]
: 공백[:space:]
: 공백 + newline[:digit:]
/[xdigit:]
: 10진수 숫자 / 16진수 숫자[:lower:]
/[:ipper:]
: 소문자 / 대문자
$ head /etc/passwd | tr -d '/'
$ head /etc/passwd | tr -d ':'
# : -> % 변환
$ head /etc/passwd | tr ':' '%'
# 소문자 -> 대문자로 변환
$ head /etc/passwd | tr [:lower:] [:upper:]
sed
stream editor
파일 내용출력 -> 그내용을 수정(editing)
주로 쓰는 옵션
n : 기본출력을 하지 않기
{RANGE}p : range 내의 라인을 출력(print)
{RANGE}d : range 내의 라인을 삭제(delete)
/SEARCHPATTERN/p : SEARCHPATTERN과 매치되는 라인을 출력
/SEARCHPATTERN/d : SEARCHPATTERN과 매치되는 라인을 삭제
s/REGEX/REPLACE/ : REGEX에 매치되는 부분을 REPLACE로 교체 (substitute)
$ head /etc/passwd | sed -n '2,5p'
$ head /etc/passwd | sed '1,5d'
$ head /etc/passwd | sed -n '/games/p'
$ head /etc/passwd | sed '/sy/d'
# 일치하는 1개 변환
$ head /etc/passwd | sed 's/root/ROOT/'
$ head /etc/passwd | sed 's/:/$/'
# 모드 변환
$ head /etc/passwd | sed 's/:/$/g'
# 검색문자열로 부터 10번째 줄까지 출력
$ head /etc/passwd | sed -n '/games/,10p'
# 검색 문자열로부터 2번째 줄까지 출력
$ head /etc/passwd | sed -n '/games/,+2p'
awk
텍스트처리 script language
syntax : awk options 'selection _criteria {action }' input-file
주로 쓰는 옵션
-F : 필드 seperator 지정
주요 내장 변수
$1, $2, $3, ... : N번째 필드
NR
NF
FS
RS
OFS
ORS
$ wc /etc/passwd | awk '{print $1}'
$ wc /etc/passwd | awk '{print $2}'
$ wc /etc/passwd | awk '{print $3}'
$ head /etc/passwd | awk -F: '{print $1}'
$ head /etc/passwd | awk -F: '/sy/ {print}'
$ head /etc/passwd | awk -F: '/sy/ {print $1}'
$ head /etc/passwd | awk -F: '/sy/ {print $4}'
# NR (레코드 넘버) -> 행의 번째
$ head /etc/passwd | awk -F: '/sy/ {print NR, $1}'
$ head /etc/passwd | awk -F: '{print NR, $1}'
# NF (필드넘버) -> 필드가 몇개 있었는지
$ head /etc/passwd | awk -F: '{print NR "==> " $1, NF}'
Last updated
Was this helpful?