인프런 - 리눅스 커맨드 라인 툴
head : 기본 10줄 출력
- 문서 내용의 앞부분 출력
- c : NUM byte만 출력
- n : 라인 수 출력, -옵션을 추가로 부여하면 밑에서부터 그만큼 빼고 출력
- 예 : cat /etc/passwd | head –n -5 : 문서 전체에서 밑에서 5줄 빼고 전체 출력
- cat /etc/passwd | head –n 15 : cat은 전체 출력이지만 파이프로 head를 할 수 있다. (15줄만 출력)
tail - head의 반대, 기본 끝에서 부터 10줄
- 문서 내용의 뒷부분 출력
- c : NUM byte만 출력
- n : 라인 수 출력 (tail에서는 +옵션을 줘야 한다), +5를 준다면? 5번째 줄부터 끝까지 출력한다.
- f : 추가 되는 내용을 기다리다가 추가되는 내용을 append 시켜줌
- F : 삭제 되었다가 같은 이름으로 다시 생기는 경우, re-open해서 follow(-f옵션)한다.
- 예 : tail /etc/passwd -n 1 : 마지막 1줄 출력
- tail /etc/passwd -n +5 : 5번째 줄부터 끝까지 출력
wc - word count
- line/word/byte count 출력
- l : 라인수 만 출력 (파일이 몇 줄인지 출력)
- 예 : wc /etc/passwd /etc/resolv.conf : 각각의 정보(라인/워드/바이트)를 보여주며 토탈정보도 보여준다.
- wc -l FILENAME | cut -d ' ' -f 1 # 라인수만 획득
- wc –l FILENAME | awk ‘{ print $1 }’ # 라인수만 획득
nl
- 파일 내용을 라인 넘버와 함께 출력
- cat FILENAME | nl : 그냥 nl과 같은 결과가 나온다
- -ba : 모든 라인에 대해 라인 넘버링, 즉 공백인 라인도 라인으로 counting 하여 출력한다.
sort
- 파일의 내용을 정렬하여 출력 : 기본은 abcd.. 순서로 오름차순 정렬
- k : 특정 컬럼을 기준으로 정렬
- t : 어떤 delimeter(구분자)을 기준으로 정렬할 건지
- n : 숫자로 인식하여 정렬 (숫자 크기에 따른 오름차순)
uniq
- 중복된 내용 제거하고 출력(기본 동작은 연속으로 중복된 것만 제거하고 출력)
- d : 중복된 내용만 출력
- u : 중복되지 않은 내용만 출력
- i : 대소문자 무시해서 중복된 내용 제거하고 출력
cut
- 컬럼 잘라내기
- f : 특정 컬럼을 선택하여 잘라내기
- d : 어떤 delimeter(구분자)를 기준으로 자를 건지(기본값은 탭)
- b : 바이트 단위로 잘라내기
- 예 : head /etc/passwd | cut -d ' ' -f 1
- delimeter는 공백, 첫번째 컬럼만 cut 하여 출력
- --output-delimiter='>' : 구분자를 '>'로 바꾸어서 출력
tr : translate
- 어떤 내용을 변환(translate)한다.
- 기본 사용법: tr [OPTION]... SET1 [SET2]
- d, --delete : SET에 맞는 것들을 지워주고, 안 지워진 부분을 출력
- 예 : head /etc/passwd | tr -d ':'
- 콜론을 다 지우고 출력
- head /etc/passwd | tr ':' '%'
- 콜론을 %로 바꾸어서 출력
sed
- 파일의 내용을 output으로 출력하는데 있어서 그 내용을 editing 한다.
- {RANGE}p : range 내의 라인을 출력
- {RANGE}d : range 내의 라인을 삭제
- /SEARCHPATTERN/p : SEARCHPATTERN과 매치되는 라인을 출력
- /SEARCHPATTERN/d : SEARCHPATTERN과 매치되는 라인을 삭제
- s/REGEX/REPLACE/ : REGEX에 매치되는 부분을 REPLACE로 교체(substitute)
- 예 : head /etc/passwd | sed '1,3p' : 첫 번째 줄부터 세 번째 줄까지 print 한다.
- 실제로는 1~3줄이 두 번씩 출력된다. (stream이기 때문에 한 줄씩 읽으면서 실행되기 때문에)
- 이럴 때는 -n을 더 부여한다. (head /etc/passwd | sed -n '1,3p')
- 실제로는 1~3줄이 두 번씩 출력된다. (stream이기 때문에 한 줄씩 읽으면서 실행되기 때문에)
- 예 : head /etc/passwd | sed '1,3d‘ : 1~3줄을 지우고 출력(-n옵션을 부여하지 않아도 원하는 대로 출력된다)
awk : 유틸리티보단 script language이다.
- 텍스트 처리 script language
- 문법 : awk options 'selection _criteria {action }' input-file
- F : delimeter 지정
- 주요 내장 변수 : 문법에서 작은따옴표 안에 들어가는 express에 사용되는 변수
- $1, $2, $3 : n번째 필드
- NR : 레코드의 갯수(행 기준으로 출력)
- NF : 필드의 갯수
- FS : 필드 separator
- RS : 레코드 separator
- OFS : Output 필드 separator
- ORS : Output 레코드 separator
- cut보다 awk가 필드 separating하면서 다른 작업을 같이할 수 있어서 더 많이 사용한다.
- 예 : wc /etc/passwd | awk '{ print $1 }' : 첫 번째 필드 출력
- 예 2 : head /etc/passwd | awk -F: '{ print $1 }' :를 구분자로 첫 번째 필드만 출력
- 예 3 : head /etc/passwd | awk -F: '/sy/' '{ print $1 }' :를 구분자로 'sy'가 포함된 첫 번째 필드 출력
'OS > Linux' 카테고리의 다른 글
리눅스 명령어 정리3 - 시스템 정보 (0) | 2022.02.27 |
---|---|
리눅스 명령어 정리2 - 검색 (0) | 2022.02.04 |