linux sort,uniq,cut,wc,tr 명령 설명

SORT
sort 명령은 File 매개 변수가 지정한 파일의 줄을 정렬하고 결과를 표준 출력에 기록합니다.File 매개 변수가 여러 개의 파일을 지정하면sort 명령은 이 파일들을 연결하여 하나의 파일로 정렬합니다.
문법
[root@www ~]# sort [-fbMnrtuk] [file or stdin]
     :
-f  :        ,   A   a       ;
-b  :           ;
-M  :         ,  JAN, DEC        ;
-n  :  『   』    (            );
-r  :    ;
-u  :   uniq ,      ,       ;
-t  :   ,     [tab]     ;
-k  :      (field)         

/etc/passwd
[root@www ~]# cat /etc/passwd | sort
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

sort는 기본적으로 첫 번째 데이터로 정렬되며, 기본값은 문자열로 정렬되기 때문에 알파벳 a부터 정렬됩니다.
 
/etc/passwd 내용은: 으로 구분됩니다. 세 번째 칸으로 정렬하고 싶습니다. 어떻게 해야 합니까?
[root@www ~]# cat /etc/passwd | sort -t ':' -k 3
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin

기본값은 문자열로 정렬됩니다. 숫자를 사용하여 정렬하려면 다음과 같이 하십시오.
cat /etc/passwd | sort -t ':' -k 3n
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/shbin:x:2:2:bin:/bin:/bin/sh

기본값은 오름차순 정렬입니다. 거꾸로 정렬하려면 다음과 같습니다.
cat /etc/passwd | sort -t ':' -k 3nr
nobody:x:65534:65534:nobody:/nonexistent:/bin/shntp:x:106:113::/home/ntp:/bin/falsemessagebus:x:105:109::/var/run/dbus:/bin/falsesshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin

 
/etc/passwd에 대해 여섯 번째 필드의 두 번째 문자에서 네 번째 문자로 정방향 정렬을 하고, 첫 번째 필드를 바탕으로 반방향 정렬을 합니다.
cat /etc/passwd |  sort -t':' -k 6.2,6.4 -k 1r      
sync:x:4:65534:sync:/bin:/bin/syncproxy:x:13:13:proxy:/bin:/bin/shbin:x:2:2:bin:/bin:/bin/shsys:x:3:3:sys:/dev:/bin/sh

 
/etc/passwd에 몇 개의 셸이 있는지 보기:/etc/passwd의 일곱 번째 영역을 정렬한 다음 다시 시작하기:
cat /etc/passwd |  sort -t':' -k 7 -u
root:x:0:0:root:/root:/bin/bash
syslog:x:101:102::/home/syslog:/bin/falsedaemon:x:1:1:daemon:/usr/sbin:/bin/shsync:x:4:65534:sync:/bin:/bin/syncsshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin

 
uniq
uniq 명령은 정렬된 파일의 중복 줄을 제거할 수 있기 때문에 uniq는sort와 자주 사용됩니다.즉, uniq가 작용하기 위해서는 모든 중복행이 서로 인접해야 한다.
문법
[root@www ~]# uniq [-icu]
     :
-i  :          ;
-c  :    
-u  :       

 
테스트 파일의 내용은 다음과 같습니다
cat testfile
hello
world
friend
hello
world
hello

정렬되지 않은 파일을 직접 삭제하면 삭제된 줄이 없습니다
#uniq testfile  
hello
world
friend
hello
world
hello

파일 정렬, 기본적으로 재설정
#cat words | sort |uniq
friend
hello
world

 
정렬 후 반복 행이 제거되고 행의 첫 번째 위치에서 반복 횟수가 출력됩니다.
#sort testfile | uniq -c
1 friend
3 hello
2 world

 
중복된 행만 표시하고 행의 맨 위에 중복된 횟수를 표시합니다.
#sort testfile | uniq -dc
3 hello
2 world

 
반복되지 않는 행만 표시
sort testfile | uniq -u
friend

 
cut
cut 명령은 텍스트 파일이나 텍스트 흐름에서 텍스트 열을 추출할 수 있습니다.
cut 구문
[root@www ~]# cut -d'    ' -f fields <==         
[root@www ~]# cut -c                 <==         
     :
-d  :       。  -f     ;
-f  :   -d                 ,  -f         ;
-c  :    (characters)            ;

 
PATH 변수는 다음과 같습니다.
[root@www ~]# echo $PATH
/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games
#1 | 2       | 3   | 4       | 5            | 6            | 7

 
PATH 변수를 제거하고 다섯 번째 경로를 찾습니다.
#echo $PATH | cut -d ':' -f 5
/usr/local/bin

 
PATH 변수를 제거하고 세 번째 경로와 다섯 번째 경로를 찾습니다.
#echo $PATH | cut -d ':' -f 3,5
/sbin:/usr/local/bin

 
PATH 변수를 제거하고 세 번째 경로에서 마지막 경로를 찾습니다.
echo $PATH | cut -d ':' -f 3-
/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games

 
PATH 변수를 제거하고 첫 번째 경로에서 세 번째 경로를 찾습니다.
# echo $PATH | cut -d ':' -f 1-3
/bin:/usr/bin:/sbin:
 

 
PATH 변수를 제거합니다. 첫 번째부터 세 번째, 그리고 다섯 번째 경로를 찾아야 합니다.
# echo $PATH | cut -d ':' -f 1-3,5
/bin:/usr/bin:/sbin:/usr/local/bin

 
실용 예:/etc/passwd만 표시하는 사용자와 셸
#cat /etc/passwd | cut -d ':' -f 1,7 
root:/bin/bash
daemon:/bin/shbin:/bin/sh

 
 wc
통계 파일 안에 몇 개의 단어, 몇 줄, 몇 글자가 있는지 모르겠다.
문법
[root@www ~]# wc [-lwm]
     :
-l  :    ;
-w  :      (    );
-m  :    ;

 
기본적으로 wc 통계/etc/passwd 사용
#wc /etc/passwd
40   45 1719 /etc/passwd

40은 행, 45는 단어, 1719는 바이트
 
wc의 명령은 비교적 간단하게 사용되며 매개 변수는 다음과 같다.
#wc -l /etc/passwd   #    ,      ,   
40 /etc/passwd       #     40   
#wc -w /etc/passwd  #        
45 /etc/passwd
#wc -m /etc/passwd  #        1719

 TR 
tr는translate의 약자입니다. 이 단어를 통해 아마도 그것이 무엇을 하는지 알 수 있을 것입니다!맞아요. 다른 문자열을 한 문자열로 바꿀 수도 있고, 일부 문자를 완전히 제거할 수도 있어요.이것을 사용해서 중복 문자를 제거할 수도 있습니다.tr는 표준 입력에서 바꾸거나 삭제하는 작업을 통해 문자를 변환하는 데 사용됩니다.tr는 주로 파일에서 문자를 제어하거나 문자 변환을 하는 데 사용됩니다.tr를 사용할 때 두 개의 문자열을 변환합니다: 문자열 1은 검색에 사용되고, 문자열 2는 각종 변환을 처리하는 데 사용됩니다.문자열 1을 문자열 2로 바꿉니다.문자열 1은 정규 표현식을 사용할 수 있습니다.만약 문자열 2가 비어 있거나 열거되지 않으면 삭제 작업을 하는 것이다. 이것은 이해하기 쉽다. 문자열 1을 빈 문자열로 바꾸는 것은 당연히 문자열 1을 삭제하는 것과 같다!보충적으로tr의 기능은sed로 완성할 수 있습니다.tr를sed의 간략한 변체로 볼 수 있습니다.가장 일반적인 옵션이 있는tr 명령 형식은tr -c -d -s ["string 1 to translate from"] ["string 2 to translate to"] 여기: - c 는 문자열 1의 문자 세트를 ASCII로 대체합니다. -d 문자열 1의 모든 입력 문자를 삭제합니다. -s 모든 중복 출현 문자 서열을 삭제하고 첫 번째만 유지한다.문자열이 반복되어 하나의 문자열로 압축됩니다.2. 문자열 1 또는 문자열 2의 내용을 지정할 때 단일 문자나 문자열 범위 또는 목록만 사용할 수 있습니다.[a-z] a-z 내의 문자로 구성된 문자열.[A-Z] A-Z 내의 문자로 구성된 문자열입니다.[0-9] 숫자 문자열.\octal은 유효한 ASCII 문자에 해당하는 3자리 8진수입니다.[O*n]은 문자 O가 지정된 횟수 n만큼 반복됨을 나타냅니다.따라서 [O*2]는 OO의 문자열과 일치합니다.tr에서 특정 제어 문자의 다른 표현 방식 속기호 의미 8진법\a Ctrl-G 벨소리\007\b Ctrl-H 체크아웃\010\Ctrl-L 줄 바꿈\014 Ctrl-J 새 줄\012\r Ctrl-M 리턴\015\t Ctrl-I tab 키\011\v Ctrl-X\0303, 적용 예(1) 제거 oops.txt의 중복된 소문자tr-s "[a-z]"result.txt(2) 빈 줄 삭제 tr -s [\012] < plan.txt 또는tr -s [""] < plan.txt(3) 파일의 ^M을 삭제하고 줄을 바꿔야 할 때가 있습니다tr-s'[\015]'[]' b.txt(5) 지정한 문자를 일주일 동안 삭제하는 일정표를 삭제합니다.작업은 날짜만 남기고 모든 숫자를 삭제합니다.날짜는 대문자도 있고 소문자도 있다.따라서 두 문자의 범위를 [a-z]와 [A-Z], tr-cs [a-z] [A-Z] [\012*]로 지정하여 파일의 줄마다 [a-z] 또는 [A-Z](모든 그리스 자모)에 포함되지 않는 모든 문자열을 문자열 1에 놓고 새 줄로 변환해야 합니다.s 옵션은 모든 새 줄을 압축하고 -c는 모든 자모가 움직이지 않음을 나타낸다.원본 파일은 다음과 같습니다. tr -cs [a-z] [A-Z] [\012*]stat.tmp로 변경하고 줄 끝의 ^M을 새 줄로 바꾸며, 임시 작업 파일stat.tmp에서 가져올 ^Z를 제거합니다.tr-s"[\015][\032]" UNIX:tr "\r" unixfile UNIX -> Mac:tr "\r" macfile Microsoft DOS/Windows에서 약속한 텍스트의 줄마다 리턴 문자 (\r) 와 줄 바꾸기 () 로 끝납니다.이 문제를 바로잡기 위해서 다음 명령을 사용할 수 있습니다: DOS -> UNIX:tr -d "\r" unixfile UNIX -> DOS: 이 경우,tr는 두 문자를 삽입해서 한 문자를 바꿀 수 없기 때문에 awk를 사용해야 합니다.사용할 awk 명령은 awk'{print$0 "\r"}' dosfile
참고 자료http://vbird.dic.ksu.edu.tw/linux_basic/0320bash_6.php#pipe_2
      http://www.cnblogs.com/stephen-liu74/archive/2011/11/10/2240461.html

좋은 웹페이지 즐겨찾기