[root@sishen ~]# vim script.sed
#!/bin/sed -f
#交換第一列和第二列
s/\([^,]*\),\([^,]*\),\(.*\).*/\2,\1, \3/g
#把整行內容放入<>中
s/^.*/<&>/
#把developer替換為it manager
s/developer/it manager/
#把manager替換為directory
s/manager/directory/
新增可執行許可權
[root@sishen ~]# chmod u+x script.sed
[root@sishen ~]# ./script.sed employee.txt
使用-n遮蔽預設輸出
[root@sishen ~]# vim sc.sed
#!/bin/sed -nf
/root/ p
/nobody/ p
/mail/ p
[root@sishen ~]# chmod +x sc.sed
[root@sishen ~]# ./sc.sed /etc/passwd
root:x:0:0:root:/root:/bin/bash
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
nobody:x:99:99:nobody:/:/sbin/nologin
nfsnobody:x:65534:65534:anonymous nfs user:/var/lib/nfs:/sbin/nologin
下面來測試下是否加-n,結果會如何
[root@sishen ~]# ./sc.sed /etc/passwd
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@sishen ~]# vim sc.sed
#!/bin/sed -fn
/root/ p
/nobody/ p
/mail/ p
[root@sishen ~]# ./sc.sed /etc/passwd
/bin/sed: couldn't open file n: no such file or directory
-nf一定不能寫反
注意:無論引數有多少個,引數順序如何,引數f後面必須接檔名
直接修改輸入檔案
前面提到sed預設不會修改輸入檔案,它只會把輸出列印到標準輸出上,當想儲存結果時,把輸出重定向到檔案(或使用w命令)
[root@sishen ~]# cp employee.txt employee1.txt #先備份一下
[root@sishen ~]# sed 's/john/johnny/' employee.txt > new-employee.txt
[root@sishen ~]# mv new-employee.txt employee.txt
mv: overwrite `employee.txt'? y
使用-i選項可以直接修改輸入檔案
[root@sishen ~]# sed -i 's/john/johnny/' employee.txt
[root@sishen ~]# cat employee.txt
101,johnnyny doe,ceo
102,jason smith,it manager
103,raj reddy,sysadmin
104,anand ram,developer
105,jane miller,sales manager
#106,jane miller,sales manager
#107,jane miller,sales manager
[root@sishen ~]# sed -ibak 's/john/johnny/' employee.txt
[root@sishen ~]# ls | grep ^em
employee.txt
employee.txtbak
注意:-i後面可以接任意乙個字串或數字並非一定要是bak
還有另外一種寫法效果一樣
posted on 2016-11-14 11:56收藏
把指標當作動態陣列使用
是陣列就會有bai長度限制的,你可du以用指標動態分配乙個陣列 例如 int array 定義指zhi針 int size 陣列的大小dao cin size 輸入陣列大小 array new int size c 的方式動態分配陣列 array int malloc size sizeof int...
sed命令使用
sed命令使用 常用選項 n 使用安靜模式,在一般情況所有的 stdin 都會輸出到螢幕上,加入 n 後只列印被 sed 特殊處理的行 e 多重編輯,且命令順序會影響結果 f 指定乙個 sed 指令碼檔案到命令列執行,r sed 使用擴充套件正則 i 直接修改文件讀取的內容,不在螢幕上輸出 sed操...
sed命令使用
常用選項 n 使用安靜模式,在一般情況所有的 stdin 都會輸出到螢幕上,加入 n 後只列印被 sed 特殊處理的行 e 多重編輯,且命令順序會影響結果 f 指定乙個 sed 指令碼檔案到命令列執行,r sed 使用擴充套件正則 i 直接修改文件讀取的內容,不在螢幕上輸出 sed操作命令 sed ...