[리눅스명령어]5.텍스트파일처리 명령어(II)
출처 : 대전국제IT교육센터 정성재 강사
1. sort
(1) 설명 : 파일의 내용을
정렬한다. 아무옵션이 없으면 공백,숫자,대문자,소문자순이다. 참고로
여기서 숫자는 실제숫자의 대소가 아닌 숫자형태의
문자로 취급한다.
(2) 사용법
sort [option] 파일이름
(3) option
-b :
선행하는 공백문자를 무시한다. (공백라인은 제외)
-f : 대,소문자를 무시한다.
-r : 정렬
순서를 반대로 하여 내림차순으로 정렬한다. (소문자,대문자,숫자,공백)
-o 파일명 : 정렬한 결과를 파일명으로 저장한다.
-c : 파일이 정렬되었는지를 검사한다. 정렬되었으면 아무런 출력도 하지 않고 정렬되지 않았다면
정렬이 되지 않았다는 메시지를
출력한다.
-n : 숫자를 같은 문자가 아닌 정말로 숫자로 취급해서 수의 크기대로 정렬한다.
-u : unique의 약자로
중복되는 라인은 출력하지 않는다.
+pos : 1+pos번째 필드를 기준으로 정렬한다. 즉 필드의 시작을 0부터한다. 만약
+m.n형태를
취하면 1+m번재 필드의 1+n번째 문자를 기준으로 정렬한다.
+pos1 -pos2 :
pos1에서 키를 시작하고 pos2전에 끝낸다. 필드번호와 문자 오프셋은 0으로 시작한
다. (-k은 1부터
시작한다.)
-t separator : 각 필드를 구분하는 키의 위치를 구분자로(separator)로 규정한다.
-k
n[,m] : 정렬한 키의 위치를 n번째 필드로 한다.(m값이 있을경우 n에서 시작해서 m에서 끝냄)
(이 키의
값은 1부터 시작한다. +붙는 것과 다르다.)
(4) 사용예
(가정) sort.txt파일의 내용이 다음과 같다고
한다.
abc
a
ABC
1abc
1)
[posein@neuro posein]$ sort sort.txt
a
1abc
ABC
abc
2) [posein@neuro posein]$ sort -r -o sortrev.txt sort.txt
[posein@neuro posein]$ cat sortrev.txt
abc
ABC
1abc
a
3) [posein@neuro posein]$ sort -t: -n -k3
/etc/passwd
=> 각 필드를 구분하는 구분자는 ':'를 기준으로 하면 숫자순으로 정렬하고 필드값은 3번째로
한다.
4) [posein@neuro posein]$ sort -t: -k2,2n -k5.3,5.4
/etc/passwd
=> 필드의 구분은 :로 하고, 두번째필드로 숫자정렬한다. 정렬한 값이 같은 경우에는 다섯번
째필드의 세번째와 네번째문자를 비교하여 정렬한다.
(가정2) pos.txt의 내용이 다음과 같다고 한다.
[posein@neuro posein]$ cat pos.txt
5 6 2 4 9
3 2 8 4
3
1 3 7 3 1
2 3 4 5 6
6 1 3 2 2
1) [posein@neuro
posein]$ sort +1 pos.txt
6 1 3 2 2
3 2 8 4 3
2 3 4 5
6
1 3 7 3 1
5 6 2 4 9
=> + 옵션은 첫번째필드를 0부터 시작한다.
2) [posein@neuro posein]$ sort -k 4 pos.txt => 정렬한 키의 기준을 4번째 필드로 한다.
6 1 3 2 2
1 3 7 3 1
3 2 8 4 3
5 6 2 4 9
2 3 4 5
6
2. sed
(1) 설명 : 스트림편집기(stream editor)로 쉘
스크립트나 다른 명령의 출력을 여과하는 파이프라인
을 사용한다. 즉 파일의 내용을 변경없이 화면상 출력만 필터링한다.
sed는 ed명령과는
다르게 입력라인을 하나씩 읽고, 수정하고 출력하기 때문에 버퍼를 사용하지 않는다.
버퍼를 사용하지 않으면 파일 크기에 제한없이 작업을 할 수 있어 sed는 큰 파일을
처리할
때 주로 사용한다.
(2) 사용법
1) sed 'command\
>문자열' 텍스트파일명
=> 텍스트를 변경하거나 삽입할 경우에는 여러줄을 사용한다. command는 꼭 ' '로 묶는다.
2)
sed [option] 'command' 텍스트파일명
=> 삭제하는 경우등은 한줄에 명령을 내려 수행할 수 있다. 문자열이
붙지 않는 command에
대해서는 작은따옴표도 생략할 수 있다.
(3) option
-n : 라인의 지정할
때 쓰인다.
-f 파일명: 특정한 스크립트가 들어있는 파일로 부터 읽어들여 처리한다.
(4) command
'n'a\ text : n은 정수값을 넣을 수 있으며, 지정한 줄 밑에 문자열을 추가하여 출력한다. n값을
설정을 하지 않으면 매 줄마다 밑으로 지정한 text를 덧붙여 화면에 출력한다.
'n'd : n은 정수값을 넣을 수
있으며, 지정한 줄을 삭제하여 화면에 출력한다. n값을 설정
하지 않으면 텍스트파일의 내용을 아무것도 출력하지
않는다. 또한 n값을 '1,4d'방법
으로 범위를 지정할 수 있다.
'n'i\ text : 지정한
줄 앞에 문자열을 삽입하여 출력한다. 역시 n값을 설정하지 않으며 매
줄앞에 문자열을 삽입하여
출력한다.
p : 선택한 라인을 한번 더 출력한다. '/문자열/p'하면 선택한 문자열이 있는 라인을 한번 더
출력한다. 그냥 p command만 사용하면 모든 라인을 두번씩 출력한다.
q : 명시된 라인에 도달할 때 종료한다. 아무값도
설정하지 않으면 1줄만 출력한다.
r 파일이름 : 파일을 읽어서 출력한다.
s/string1/string2/ :
각라인의 첫번째 string1만 string2로 바꾼다.
s/string1/string2/g : 모든 라인의 string1을
string2로 바꿔 출력한다.
(참고1) 현재 리눅스에서는 's\string1\string2\g' 와
's/string1/string2/g' 다 된다.
(4) 사용예
(가정) test.txt의 내용이 다음과 같다고 가정한다.
I study linux
I study windows
PHP & MySQL
1)
[posein@neuro posein]$ sed 'a\
> I am King' test.txt
I
study linux
I am King
I study windows
I am
King
PHP & MySQL
I am King
=> test.txt파일에서 각
행다음에 'I am King'이라는 문자열을 붙여서 출력한다.
2) [posein@neuro posein]$ sed
'2a\
> I am King' test.txt
I study linux
I study
windows
I am King
PHP & MySQL
=> test.txt파일에서
2행다음에 즉 3행에 'I am King'이라는 문자열을 붙여서 출력한다.
3) [posein@neuro posein]$ sed
'd' test.txt => 아무 내용도 출력하지 않는다.
4) [posein@neuro posein]$ sed '2d'
test.txt
I study linux
PHP & MySQL
=> 2번째 줄을
삭제하고 출력한다.
5) [posein@neuro posein]$ sed '1,2d' test.txt
PHP
& MySQL
6) [posein@neuro posein]$ sed 'i\
> I am
LinuxMania' test.txt
I am LinuxMania
I study linux
I
am LinuxMania
I study windows
I am LinuxMania
PHP
& MySQL
7) [posein@neuro posein]$ sed 's/study/learning/'
test.txt
I learning linux
I learning windows
PHP
& MySQL
8) [posein@neuro posein]$ sed p test.txt => 모든 라인을 2번씩
출력한다.
I study linux
I study linux
I study
windows
I study windows
PHP & MySQL
PHP &
MySQL
9) [posein@neuro posein]$ sed '2p' test.txt => 두번째 라인만 2번
출력한다.
I study linux
I study windows
I study
windows
PHP & MySQL
10)[posein@neuro posein]$ sed '/linux/p'
test.txt
=> 'linux'라는 문자열을 찾아 2번 출력한다.
I study
linux
I study linux
I study windows
PHP &
MySQL
11)[posein@neuro posein]$ sed q test.txt
I study
linux
12)[posein@neuro posein]$ sed '2q' test.txt
I study
linux
I study windows
(가정3) 여기서 test1.txt의 내용은 다음과 같다.
I
learning linux
I learning windows
PHP & MySQL
13)[posein@neuro posein]$ sed r test.txt test1.txt
I study
linux
I study windows
PHP & MySQL
I learning
linux
I learning windows
PHP & MySQL
=> 먼저
test.txt라는 파일을 읽어서 출력한 다음에 test1.txt의 내용을 출력한다.
14)[posein@neuro posein]$
sed 'r test.txt' test1.txt
I learning linux
I study
linux
I study windows
PHP & MySQL
I learning
windows
I study linux
I study windows
PHP &
MySQL
PHP & MySQL
I study linux
I study
windows
PHP & MySQL
=> test1.txt파일을 기본으로 출력하는 데 각 라인
다음에 test.txt 파일의 내용을 읽어들여
출력한다.
15) [posein@www posein]$ cat
sedscr
s/learning/study/g
[posein@www posein]$ sed -f sedscr
test1.txt
I study linux
I study windows
PHP &
MySQL
16) sed -n '21,30p' /etc/passwd > b.txt
=>
/etc/passwd파일의 21번째부터 30번째라인까지를 b.txt로 저장한다.
head -30 /etc/passwd |
tail > b.txt 와 같은 결과이다.
3. expand
(1) 설명
: 일반적으로 설정되어 있는 탭(tab)의 크기(8)를 원하는 공백(space)의 수로 바꾸어
화면에 출력한다. 즉
tab을 space로 전환시켜주는 명령이다. 기본적으로 원본파일을
수정하지 않고 표준 출력으로 보여준다.
(2)
사용법
expand -크기 파일명
expand -t 크기 파일명
(3) 사용예
1)
[posein@neuro posein]$ cat tab.txt
a a a a
a
012345678
=> 일반적인 탭의 간격은 8이다.
2) [posein@neuro
posein]$ expand -t 3 tab.txt
a a a a a
012345678
=> 탭의 간격을 3으로 설정하였다.
3) [posein@www posein]$
expand -t 5 tab.txt > tab5.txt
[posein@www posein]$ cat
tab5.txt
a a a a a
012345678
=> 탭의
간격을 5으로 설정하였다.
4. unexpand
(1) 설명: 스페이스의
크기를 탭으로 전환시켜 준다.
(2) 사용법
unexpand options 파일명
(3) options
-a :
행의 시작 부분의 공백뿐만 아니라 모든 공백을 변환한다.
-t 공백크기 : 지정한 공백크기를 하나의 Tab(8칸)으로 변환한다.
(--tabs=공백크기)
(4) 사용예
1) [posein@www posein]$ cat tab2.txt
a a a a a
01234567890
=> 현재 공백의 크기가
6이다.
[posein@www posein]$ unexpand -a -t 6 tab2.txt
a
a a a a
01234567890
=> 크기가 6인 모든 공백을 하나의
Tab(8칸)으로 변환한다.
2) [posein@www posein]$ unexpand -a --tabs=6 tab2.txt >
tab6.txt
[posein@www posein]$ cat tab6.txt
a a
a a a
01234567890
=> tab2.txt 문서에서 크기가 6인 모든
공백을 하나의 Tab(8칸)으로 변환한다.
5. cut
(1) 설명 :
데이터의 열(컬럼)을 추출할 때 사용한다. 이 때 추출할 데이터는 파일 안 각 라인의
글자(character),
바이트(byte) 또는 필드(field)일 수 있다.
(2) 사용법
cut option file_name
(3)
option
-c : 문자수로 따져서 추출한다.
-f : 파일 내의 필드로 따져서 추출한다.
-d : 필드
구분자를 사용한다. (기본값은 TAB 이다.)
(4) 사용예
1) [posein@www posein]$ cut -c 1-10
/etc/passwd
linuxone:x
bluesky:x:
eagle5:x:5
fish:x:520
2) [posein@www posein]$ cut -f 1,3 -d: /etc/passwd
linuxone:517
bluesky:518
eagle5:519
fish:520
=> /etc/passwd파일의 첫번째,세번째 필드의 값을 보여준다. 필드의 구분은 ':'로
한다.
3) [posein@www posein]$ cut -f1 -d: /etc/passwd |sort -r
|less
xitem
xfs
wnn
webalizer
vcsa
uucp
sync
sshd
=> /etc/passwd파일의
첫번째 필드(:기준)부분만 잘라 역으로 정렬한뒤 한페이지단위로
보여준다.
6.
fmt
(1) 설명 : 간단한 문서 포맷도구로 문단의 들여쓰기 중복되는 공백문자등을 처리할 수 있다.
(2)
사용법
fmt option file_name
(3) option
-u : 중복되는 공백 문자를 모두 하나로
취급한다.
-t : 단락의 처음 두 라인의 들여쓰기를 원래대로 유지한다.
-w : 최대 라인 폭을 설정한다.(디폴트
75컬럼) w를 생략하고 -뒤에 직접 입력해도 된다.
(4) 사용예
(가정) test2.txt의 문서를 다음과 같다고
하자.
I study a a linux
I study windows
PHP & MYSQL
1) [posein@www posein]$ fmt -w 10 test2.txt
I study a
a
linux
I study
windows
PHP &
MYSQL
2) [posein@www posein]$ fmt -u test2.txt
I study a a linux I study
windows PHP & MYSQL
7. nl
(1) 설명 : 각
라인에 번호를 붙여 표준출력으로 보여준다.
(2) 사용법
nl [option] file_name
(3)
option
-s'구분자' : 각 라인위 문자열과 변호를 사이에 구분자를 설정한다.
(4) 사용예
1)
[posein@www posein]$ nl test2.txt
1 I study a a linux
2 I study windows
3 PHP & MYSQL
2) [posein@www posein]$
nl -s'}' test2.txt
1}I study a a linux
2}I study
windows
3}PHP & MYSQL
8.
od
(1) 설명 : octal dump의 약자로 파일을 8진수, 10진수, 16진수 또는 ASCII형태로
출력한다.
(2) 사용법
od [option] file
(3) option
-o : octal(8진수)로
출력한다. 기본값으로 설정되어 있다.
-d : decimal(10진수)로 출력한다.
-x :
hexadecimal(16진수)로 출력한다.
-a : named character
-c : ASCII값으로
출력한다.
-f : flationg point(부동소수점형태)로 출력한다.
(4) 사용예
(가정) test.txt의
파일의 내용이 다음과 같다고 하자.
worldcup
linux
1) [posein@www posein]$
od test.txt
0000000 067567 066162 061544 070165 066012 067151 074165
000012
0000017
=> 8진수 형태로 변환한다.
2) [posein@www
posein]$ od -a test.txt
0000000 w o r l d c u p nl
l i n u x nl
0000017
=> named character 값으로 출력한다.
새로운라인을 'nl'로 표시한다.
3) [posein@www posein]$ od -c test.txt
0000000 w o r l d c u p \n l i n u x \n
0000017
=> ASCII값으로 출력한다. 새로운라인을 '\n'으로 표시한다.
9. paste
(1) 설명 : 여러 파일의 해당 라인을 합친다. 각 파일의 해당 라인을 연속적으로
출력하고, 새로운
라인앞에는 탭을 삽입한다.
(2) 사용법
paste [option] file1
file2
(3) option
-d 구분자 : 결합하는 라인의 구분자를 지정한다. 기본값은 탭문자이다.
-s : 한
파일의 내용을 먼저 연속적으로 출력한 후 다음 파일을 덧붙여 출력한다.
(4) 사용예
(가정) [posein@www
posein]$ cat os.txt
linux
windows
[posein@www posein]$ cat lang.txt
php
asp
1)
[posein@www posein]$ paste os.txt lang.txt
linux php
windows
asp
=> 기본값인 탭문자를 삽입하여 두 파일의 라인을 합친다.
2) [posein@www posein]$
paste -d: os.txt lang.txt
linux:php
windows:asp
=> 구분자로 ':'를 삽입하여 두 파일의 라인을 합친다.
3) [posein@www posein]$ paste -s
os.txt
linux windows
=> os.txt파일의 라인을 하나로 합친다.
4)
[posein@www posein]$ paste -s os.txt lang.txt
linux windows
php asp
=> 먼저 os.txt라는 파일의 라인을 합친뒤에 화면에 출력하고 다음에 lang.txt파일의
라인을
합쳐서 화면에 출력한다.
10. pr
(1) 설명
: 표준출력으로 파일을 재구성하거나 쓰기 위한 명령으로 문서 파일을 양식화하는 도구로
사용된다.
(2)
사용법
pr option file
(3) option
+페이지 : 지정한 페이지부터 출력한다. 기본값은
1이다.
-컬럼 : 출력할 열의 수를 정한다.
-n : 파일에 라인번호를 붙여서 출력한다.
-d : 라인 사이를
한 라인씩 띄워서 출력한다.
-h : 각 페이지의 헤더를 명시한다.
-l 라인 : 페이지 길이를 '라인'에 지정한 수로
설정한다. 기본값은 66이다.
-m : 각 파일을 열(column)대로 합쳐서(merge) 출력한다. 최대 8개 파일을 합칠 수
있다.
-w width : 라인의 폭을 width에 지정한 수로 설정한다. 기본값은 72이다.
(4) 사용예
(가정)
os2.txt
linux
windows
php
mysql
1)
[posein@www posein]$ pr -n os.txt
2002-06-01
00:40 os.txt Page
1
1 linux
2 windows
=> 페이지
단위로 출력됨을 알 수 있다.
2) [posein@www posein]$ pr -d os.txt
=> 각 행
사이에 공백을 주어 출력됨을 알 수 있다.
3) [posein@www posein]$ pr -n os.txt |
lp
=> os.txt 파일의 각 라인에 번호를 붙여 프린터로 출력한다. 물론 이 경우에 프린터가
설치
되어 있어야 한다.
4) [posein@www posein]$ pr -3dh "pr test"
os2.txt
2002-06-01 01:01 pr test
Page 1
linux php
mysql
windows
=> 기본 한 라인에 3열(즉, 한라인에 기존파일의 3라인을
처리)을 출력하고 파일의 헤더를
'pr test'라고 지정한다.
5) [posein@www posein]$
pr -l30 -w50 -n /etc/passwd
=> /etc/passwd 파일을 50컬럼 30라인을 한 페이지로 하여
각 라인에 번호를 붙여 출력한다.
11. split
(1) 설명 : 하나의
파일을 여러 개의 작은 파일로 분리하는 명령어로 옵션없이 실행하면, 기본값이
1000라인 단위로 파일을 분리한다.
별도의 파일명을 지정하지 않으면 xaa, xab..등과
같은 형태로 생성된다.
(2) 사용법
spilt [option] 분리하고자_하는_파일명 [생성하고자하는_파일명]
(3) option
-b 사이즈 : 파일을 주어진
바이트 크기로 분리한다.
-c 사이즈 : 파일의 라인크기를 주어진 크기로 최대한 맞도록 분리한다.
-l 라인 : 파일을
주어진 라인 수 단위로 분리한다.
-넘버 : -l옵션을 사용한 것과 동일한 역할을 한다.
(4) 사용예
1)
[posein@www posein]$ split -l 30 /etc/passwd
=> /etc/passwd 파일을 한
파일에 30라인씩 잘라서 파일을 생성한다. 별도로 지정한 이름이
없으므로 xaa, xab, xac ...등으로
생성된다.
2) [posein@www posein]$ split -40 /etc/passwd pa
=>
/etc/passwd파일을 한 파일에 40라인씩 잘라서 파일을 생성한다. pa라는 이름을 부여하였
으므로 생성되는 파일은
paaa, paab..등으로 생성된다.
12. tac
(1) 설명 : 파일의
내용을 맨 아래줄부터 역순으로 출력하는 명령이다. 이름에서 보듯 cat명령의
반대되는 개념이다.
(2)
사용법
tac [option] 파일
(3) option
-b : 분리자를 파일의 처음에 덧붙인다.(newline)
보통 공백라인이 삽입된다.
(4) 사용예
[posein@www posein]$ tac os.txt
windows
linux
=> 기존의 파일의 내용을 역순으로 출력한다.
13. tr
(1) 설명 : 파일의 임의의 문자(열)를 원하는 문자로 바꾸는 명령이다. 프로그램 소스의
변수명이나
데이터 타입을 바꿀 경우 유용하게 쓰인다. 이 명령은 꼭 < 를 이용하여 입력을
지정해야
된다.
(2) 사용법
tr [option] string1 string2 <
파일명
(3) option
-d : 해당문자를 삭제한다.
-s : 문자가 중복된 경우 하나만 남기고 모두
삭제한다.
(4) 사용예
(가정) tr.txt 과 다음과 같다면
I love
linux
I love windows
I loove unix
1) [posein@www
posein]$ tr o i < tr.txt
I live linux
I live
windiws
I liive unix
=> tr.txt의 'o'를 'i'로 바꿔서 출력한다.
2) [posein@www posein]$ tr -s 'o' < tr.txt
I love linux
I
love windows
I love unix
=> 'o'가 중복된 경우 'o'를 하나만
출력한다.
3) [posein@www posein]$ tr '[a-z]' '[A-Z]'< tr.txt
I
LOVE LINUX
I LOVE WINDOWS
I LOOVE UNIX
=> 소문자를 전부
대문자로 바꿔 출력한다.
4) [posein@www posein]$ tr '[a-z]' '[A-Z]' < tr.txt >
tr2.txt
[posein@www posein]$ cat tr2.txt
I LOVE LINUX
I LOVE WINDOWS
I LOOVE UNIX
=> tr.txt를 입력받아 대문자로 전환한뒤에
tr2.txt파일에 저장한다.
5) [posein@www posein]$ tr -d 'o' < tr.txt
I
lve linux
I lve windws
I lve unix
(참고) tr명령을 이용하여
대소문자전환하는법
1. tr abcdefghijklmnopqstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
2. tr '[a-z]' '[A-Z]'
3. tr '[:lower:]' '[:upper:]'
14. join
(1) 설명: paste 명령과 비슷한 명령으로 두 개의 정렬된 파일을 하나로 수평
병합해주는 명령이다.
이 명령은 정확히 두 파일에 대해서 동작하지만 두 파일사이에 공통으로 표시된
필드(보통
숫자 라벨)가 있는 줄에 대해서만 합쳐서 결과를 표준출력으로 출력해준다. 정확히 동작
하려면 두 파일 모두 표시 필드가 있어야 한다.
(2) 사용법
join [options] file1 file2
(3)
사용예
[posein@www posein]$ cat a.txt
1 designer
2
programmer
3 engineer
[posein@www posein]$ cat b.txt
1 Miss
Kim
2 Mr.Lee
3 Mr.Jung
[posein@www posein]$ join a.txt
b.txt
1 designer Miss Kim
2 programmer Mr.Lee
3 engineer
Mr.Jung
15. diff
(1) 설명: 두 개의 파일을 비교한다. 이
명령은 두 개의 파일이 어떻게 다른가 표시해준다. 그래서
어떻게 수정되어야 두 파일이 같아지는 지를 보여준다. 결과는
기준이 되는 파일이 두번째
파일이다. 그래서 모든 정보는 '첫번째 파일이 어떻게 수정되어야 두번째 파일과
같아지느
냐'하는 식이다.
(2) 사용법
diff [option] 파일1 파일2
(3)
option
-i : 대소문자를 구분하지 않는다.
-b : 하나 이상의 공백문자는 모두 같은 것으로 취급해서
비교한다.
(4) 결과
a : append의 약자로 파일2에서 파일1으로 첨가되어야 할 것이 이 값으로 표시된다.
d : delete의 약자로 파일1에서 제거되어야 하는 내용은 이 값으로 표시된다.
c : change의 약자로 파일의 내용이
바뀌어야 하는 내용이 이 값으로 표시된다.
(5) 사용예
1) [posein@www posein]$ cat
aa.txt
I love linux.
I love windows.
[posein@www
posein]$ cat bb.txt
I love linux.
I love windows.
I
love unix.
[posein@www posein]$ diff aa.txt bb.txt
2a3
> I love unix.
=> (설명) 파일2에서 3번째줄을 파일1에 추가하면
같아진다.
2) [posein@www posein]$ diff bb.txt aa.txt
3d2
< I love unix.
=> 파일1에서 3번째줄을 제거해야 파일2와 같아진다.
3)
[posein@www posein]$ cat aa.txt
I love linux.
I love
windows.
[posein@www posein]$ cat bb.txt
I love
linux.
I love window.
[posein@www posein]$ diff aa.txt
bb.txt
2c2
< I love windows.
---
> I
love window.
=> 파일1의 내용이 바뀌어야 파일2와 같아진다.
16. uniq
(1) 설명: 중복되어 있는 라인을 제거하고 한라인으로 출력한다. 보통 sort명령과 함께
쓰이면서
중복되어 있는 것을 제거하고 출력할 때 많이 쓰인다. (참고로 sort명령에 -u 옵션과
같
다.)
(2) 사용법
uniq [options] 파일1 [파일2]
=> 파일1의
중복되어 있는 줄을 제거한다. 파일2를 지정하면 제거한 내용을 화면에 출력하지
않고 '파일2'라는 이름으로
저장한다.
(3) option
-u : 실제적으로 중복되는 줄을 제거하고 출력한다.
-c : 줄의 수를 계산하여
보여준다.
-d : 라인이 반복되었을 때 그 반복된 라인 한 줄을 출력해준다.
(4) 사용예
1)
[posein@www posein]$ cat list.txt
linux
windows
linux
linux
[posein@www posein]$ uniq list.txt
linux
windows
linux
=> 중복되는 줄인 linux라는 것을 한줄 제거하고
출력한다.
2) [posein@www posein]$ uniq list.txt list2.txt
[posein@www
posein]$ cat list2.txt
linux
windows
linux
=> list.txt의 중복되는 줄을 제거하고 그 값을 list2.txt라는 파일에 저장한다.
3) [posein@www
posein]$ uniq -u list.txt
linux
windows
=>
linux라는 줄이 3줄이었는데 실제적으로 제거하고 1줄만 출력한다.
4) [posein@www posein]$ uniq -c
list.txt
1 linux
1 windows
2
linux
5) [posein@www posein]$ uniq -d list.txt
linux
=> 'linux'라는 문자열만 반복되었으므로 linux라는 값만 나온다.
6) [posein@www posein]$ cut
-d: -f7 /etc/passwd | sort | uniq
/bin/bash
/bin/false
/bin/sync
/dev/null
/sbin/halt
/sbin/nologin
/sbin/shutdown
17.
aspell
(1) 설명: 텍스트파일의 철자(Spelling)을 검사해주는 명령어이다.
(2) 사용법
aspell option 텍스트파일
(3) option
-c : 텍스트파일의 철자를 검사하는 옵션이다. -c 대신에 check
라고 써도 된다.
-l : 잘못된 철자를 표준입력으로 부터 등록한다.
(4) 사용예
[가정] a.txt 라는 파일의
내용이 다음과 같다고 하자.
[posein@www posein]$ cat a.txt
I lovi
linux
I love windows
1) [posein@www posein]$ aspell -c
a.txt
I lovi linux
I love windows
1) 6) loci
2)
love 7) Levi
3)
lvi 8) Love
4) lo
vi 9) Loki
5)
lo-vi 0) Loni
i)
Ignore I) Ignore all
r)
Replace R) Replace all
a)
Add x) Exit
=> 원하는 키를
선택하면 된다. 만약 love라는 단어로 변경하려면 [2]키를 누른다.
2) [posein@www posein]$ aspell -l
< new.txt
CarWash
FirstOne
=> new.txt로부터 단어를
읽어들여 잘못된 철자로 등록시킨다.
18. look
(1) 설명: 특정한
문자열을 지정하면 해당 문자열로 시작하는 단어를 /usr/share/dict/words에서
찾아준다.
(2)
사용법
look 문자열
(3) 사용예
[posein@www posein]$ look copy
copy
copying
copyright
copyrightable
copyrighted
copyrights
copywriter