sed CMD
sed 명령어는 스트림 에디터이다. 역할은 원본 파일에 변형을 주지 않고 단지 출력되는 결과를 변화시켜 보여주는 역할을 한다. 에디터의 일종이기 때문에 vi 편집기와 같은 많은 기능을 제공하고 있다. 또한 sed 명령어는 스크립트 형태로 파일에 저장할 수 있기 때문에 다중 편집이나 쉘 명령행에서 인용부호를 사용하는데 따르는 어려움을 줄여준다.
ex)
# sed '1,3p' /etc/passwd -> 1,2,3개의 라인을 한번더 출력
# sed -n '1,3p' /etc/passwd -> 1,2,3 라인까지를 출력
# sed '1,3d' /etc/passwd -> 1,2,3 라인을 제외한 나머지 라인을 출력
# sed 's/root/ROOT/' /etc/group -> root를 찾아서 ROOT로 변경후 출력
# sed '1,3s/root/ROOT/g' /etc/group -> 1,2,3 라인에서 root를 ROOT로 변경후 출력
# sed -n '/root/,/adm/p' /etc/passwd -> root문자에서 adm 문자까지를 출력
# sed -n '5,/^nobody/p' /etc/passwd -> 5번째 라인부터, 라인이 처음으로 nobody로 시작하는 라인까지
# sed -n '/[Rr]oot/p' /etc/passwd -> Root나, root를 모두 포함해서 출력
# sed -n '/root/p' /etc/passwd -> root가 포함된 라인만 출력
# sed -n '3p' /etc/passwd -> 3번째 라인만 출력
# sed '3d' /etc/passwd -> 3번째 라인만 제외하고 출력
# sed 's/root/ROOT/g' /etc/passwd
# sed 's/^root/ROOT/g' /etc/passwd
# sed -n 's/^root/ROOT/p' /etc/passwd
# sed -n 's/root/ROOT/gp' /etc/passwd
# sed 's/[0-9][0-9]$/&.5/' /etc/passwd
# sed 's/(∖Mar∖)got/∖1ianne/p' datafile
# sed 's/….//' filename -> 각행의 첫 4글자 삭제
# sed 's/….$//' filename -> 각행의 마지막 4글자 삭제
# sed 's#root#ROOT#g' /etc/passwd
# sed '/export/s/-/rq/g' /etc/vfstab
/etc/vfstab에서 export라는 단어를 찾고, 그라인에 있는 [-] 를 [rq]로 global 하게 변경.
# sed '/west/,/east/s/$/**VACA**/' datafile (<==> 1,15s/$/**VACA**/')
west부터 시작해서 east까지 찾아서, 각 라인의 끝에다가 **VOCA**를 덧붙여 준다.
sed -e '1,5d' -e 's/no/NO/g' /etc/passwd
5라인을 지우고 ,no를 NO로 변경
sed -f script.sed /etc/passwd
미리 만들어놓은 파일을 적용
File 다루기
파일 내용 필터링 하기
1. 파일의 첫번째 라인 지우기
# sed '1d' filename
2. 파일의 마지막 라인 지우기
# sed '$d' filename
3. 파일의 특정한 라인 지우기
# sed '3,5d' filename
# sed '1,0d' filename
# sed '10,$d' filename
# sed '/root/,/other/d' filename
# sed '/root/d' filename
파일 내용 치환 하기
1. 파일의 첫라인에 새로운 내용 추가
# sed '1,3s/^/HIS: /g' filename -> 1,2,3의 첫번째 라인에 HIS를 추가
# sed '10,$s'/^/HIS: /g' filename
# sed '10,20s/%/ /g' filename -> 공백만큼 들여쓰기
2. 파일의 끝라인에 새로운 내용 추가
# sed '1,3s/$/
3. 파일의 특정한 라인에 새로운 내용 추가
# sed '/export/s/-/rq/g/; /etc/vfstab
4. 파일의 주석 모두 지우기
# sed -e '/#/d' filename
5. 파일의 공백 지우기
# sed -e '/^$/d' filename
옵션
옵션
설명
-e
다중 편집을 가능하게 한다.
-f
sed 스크립트 파일 지정에 사용된다.
-n
기본 출력을 생략한다.
메타문자
메타문자
기능
사용예
사용 예 설명
&
검색열을 저장하여 치환열에서 사용할 *수 있게 한다.
s/love/**&**
앰퍼샌드(&)는 검색열을 나타낸다. 문자역 love가 앰퍼샌드로 치환된다. 왼쪽의 경우 love는 **love**로 치환된다.
awk CMD
기능
- ① Filters
- ② Numerical processing on rows and columns of data
- ③ Text processing to perform repetitive editing tasks
- ④ Report generation
- ① Filters
- 확장 명령어
- gawk (Gnu Awk CMD)
- nawk (New Awk CMD)
- gawk (Gnu Awk CMD)
- 형식
awk 'statement' filename
statement is
- ① pattern
- ② {ACTION}
- ③ pattern {ACTION}
- ① pattern
$1 ~ $9는 각 필드에 대한 구분이며 $0은 모든 필드를 의미한다.
- ex)
# awk '{ print $0 }' testfile
# awk '{ print $3 $5 $9 }' testfile
# awk '{ print $3, $5, $9 }' testfile
# awk '{ print $3 " " $9 " " $6, $7 }' testfile
# awk '{ print $3 "\t" $5 "\t" $9 }' testfile
# awk '{ print $9, "is using", $5, "bytes" }' testfile
# awk '/file/' testfile
# awk '/^-/' testfile
# awk '{ print $1, $2, $3 }' testfile
# awk '/file/ { print $1, $2 }' testfile
# awk '/file/ { print $1 "∖t" $2 }' testfile
# awk '/dir/ { print $1 "∖t" $2 "∖t" $3 }' testfile
# awk -F: '/root/ { print $1 "∖045" $2 }' /etc/passwd
# awk -F: '$3 > 99 && $3 < 60000 { print $1 }' /etc/passwd
-rw-r--r-- 1 named named 960 2월 17 09:28 slave-podmall.net.zone.jnl
-rw------- 1 named named 518 2월 17 09:28 slave-printsj.co.kr.zone
-rw-r--r-- 1 named named 1605 2월 17 09:28 slave-printsj.co.kr.zone.jnl
-rw------- 1 named named 426 2월 17 09:28 slave-sambopr.co.kr.zone
-rw-r--r-- 1 named named 1672 2월 17 09:28 slave-sambopr.co.kr.zone.jnl
-rw------- 1 named named 425 2월 17 09:28 slave-samhwa85.com.zone
-rw-r--r-- 1 named named 9176 2월 17 09:28 slave-samhwa85.com.zone.jnl
-rw------- 1 named named 394 2월 17 09:27 slave-ssfile.kr.zone
-rw-r--r-- 1 named named 1592 2월 17 09:27 slave-ssfile.kr.zone.jnl
-rw------- 1 named named 444 2월 17 09:28 slave-stor.kr.zone
-rw------- 1 named named 440 2월 17 09:27 slave-textdesign.co.kr.zone
-rw-r--r-- 1 named named 2246 2월 17 09:27 slave-textdesign.co.kr.zone.jnl
-rw------- 1 named named 399 2월 17 09:27 slave-todayart.in.zone
-rw-r--r-- 1 named named 1408 2월 17 09:27 slave-todayart.in.zone.jnl
-rw------- 1 named named 429 2월 17 09:27 slave-windigo.co.kr.zone
-rw-r--r-- 1 named named 1672 2월 17 09:27 slave-windigo.co.kr.zone.jnl
위의 파일명중 slave- 부분을 없애기
[root@ns2 named]# rename slave- " slave-*