2012年2月1日 星期三

sed 指令使用

如何使用 sed
sed 是用來 排序的指令
例如說
一筆資料 data
1
2
3
4
5


cat data |sed '3d'
會顯示
1
2
4
5



[root@www ~]# nl /etc/passwd | sed '2,5d'
1 root:x:0:0:root:/root:/bin/bash
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown


若是要刪除第 3 到最後一行,則是『 nl /etc/passwd | sed '3,$d' 』的啦,那個錢字號『 $ 』代表最後一行!




範例三:在第二行後面加入兩行字,例如『Drink tea or .....』與『drink beer?』
[root@www ~]# nl /etc/passwd | sed '2a Drink tea or ......\
> drink beer ?'
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
Drink tea or ......
drink beer ?
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin



範例四:我想將第2-5行的內容取代成為『No 2-5 number』呢?
[root@www ~]# nl /etc/passwd | sed '2,5c No 2-5 number'
1 root:x:0:0:root:/root:/bin/bash
No 2-5 number
6 sync:x:5:0:sync:/sbin:/bin/sync
.....(後面省略).....



範例五:僅列出 /etc/passwd 檔案內的第 5-7 行
[root@www ~]# nl /etc/passwd | sed -n '5,7p'
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown


範例六 取代字串
sed 's/要被取代的字串/新的字串/g'

ex
[Andy@ed520-RAID project1]$ cat sort
Ka123456789 line1
Ka987654321 line2
Ka555555555 line3
Ka135798642 line4
Ka246810951 line5


[Andy@ed520-RAID project1]$ cat sort |sed 's/Ka/Andy/g'
Andy123456789 line1
Andy987654321 line2
Andy555555555 line3
Andy135798642 line4
Andy246810951 line5


事實上 沒有寫g 好像也會自動替代
.....(後面省略).....

沒有留言:

張貼留言