Self-Improvement

2) 쉘 프로그래밍에서 유용하게 쓰이는 CMD 본문

프로그래밍/Shell

2) 쉘 프로그래밍에서 유용하게 쓰이는 CMD

JoGeun 2018. 10. 21. 12:57

*grep CMD
 특정단어를 검색하는 명령어

 //옵션
 -i : 대소문자 구분없이 검색
 -l : 검색단어가 들어있는 파일 검색
  ex) #grep -l root /etc/hosts /etc/passwd 
 -n : 라인번호 검색
 -v : 검색단어를 제외하고 검색
 -w : 단어로 되어있는 검색

*sed CMD
 원본파일을 건들이지 않으며 명령어를 통하여 편집하고 모니터에 출력하는 명령어
 ※grep CMD과 비슷하지만 sed CMD는 특정 단어에서 특정 단어까지 검색이 가능

 1.p CMD
 #sed -n '1,3p' /etc/passwd (1~3까지만 출력)
 #sed '1,3p' /etc/passwd (전체내용 한번출력되고 1~3까지 한번더 출력)
 #sed -n '1,/adm/p' /etc/passwd (첫번째줄에서 adm이 들어간 라인까지 출력)
 #chkconfig --list | sed -n '/xinetd based/,$p'
 ※원본파일엔 영향 x
 
 2.d CMD
 #sed '1,3d' /etc/hosts (1~3까지의 라인 삭제후 모니터에 출력)
 #sed '3d' /etc/passwd (3번째라인만 삭제후 출력)
 #sed '$d' /etc/passwd (마지막라인 삭제후 출력)
 #sed '/root/d' /etc/passwd (root가 들어간 라인 삭제후 출력)
 ※원본파일엔 영향 x
 
 3.s CMD
 #sed 's/root/ROOT/' /etc/group (root을 ROOT로 치환후 출력)
 #sed 's/^....//' /etc/hosts (첫번째 네글자를 공백으로 치환후 출력)
 #sed '1,3s/^/   /' /etc/hosts (1~3라인의 첫번째에 공백추가 치환후 출력)
 
 #sed 's#/test/file.sh#/test/file.c#g' file1 ('/'가 있는 검색시 #으로 대체가능)
 #sed 's;/test/file.sh;/test/file.c;g' file1 ('/'가 있는 검색시 ;으로 대체가능)
 #sed 's/root/ROOT/' /etc/group > /tmp/.file1 (치환한 것을 file1에 저장)
 #sed '/linux200/s/192.168.20.200/172.16.20.200/' /etc/hosts > /tmp/.file1 (linux200이 들어있는 라인의 주소를 치환후 file1에저장)
 ※원본파일엔 영향 x

 //옵션
 -i : 변경된 사항을 모니터에 출력도하며 원본파일에도 적용

*awk CMD
 #awk '{print $0}' /etc/passwd
 #awk -F : '{print $3,$5}' /etc/passwd
 #awk -F : '{print $3"\t"$5}' /etc/passwd
 #awk -F : '{print $3 "is using" $5 "bytes"} /etc/passwd
 #awk '/root/ { print $1, $2 }' testfile
 #awk -F: '$3 > 499 && $3 < 60000 {print $1}' /etc/passwd 
 #ps -elf | awk '$2 == "Z" {print $0}'

*기타명령어
 1.sort CMD
 #du -sk * | sort -nr 
 #sort -u /etc/passwd (중복을제외한 단어하나씩 출력)
 #sort /etc/passwd | uniq -d (file1의 중복되는 단어 출력)
 #sort /etc/passwd | uniq -u (file1의 중복되지않는 단어 출력) 
 
 ex)
 #cat file1 file1.bak > sum.txt
 #sort sum.txt | uniq -u

 2.cut CMD
 ※awk명령어와 비슷한부분이 많다.
 #cut -c1-3 /etc/passwd (1~3자리수만 출력)

 3.uniq CMD
 ※sort 명령어와 같이 사용해야함
 #sort file1 | uniq -d (중복되는 것을 출력)
 #sort file1 | uniq -u (중복이 없는 것을 출력)
 
 4.tr CMD
 #cat /etc/passwd | tr "[A-Z]" "[a-z]" (대소문자를 소문자로 치환)

 5.split CMD
 #split -l 4 file1 (file1을 4줄씩 분할하여 파일 생성)
 #split -d -l 4 file1 (file1을 4줄씩 분할하여 숫자형식 제목으로 파일 생성)

 6.paste CMD
 #pastte file1 file2