sed和awk常用命令
sed常用
sed命令列格式為:
sed [-nefri] ‘command’ 輸入文字/檔案
常用選項:
-n∶取消預設的輸出,使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN的資料一般都會被列出到螢幕上。但如果加上 -n 引數後,則只有經過sed 特殊處理的那一行(或者動作)才會被列出來
-e∶進行多項編輯,即對輸入行應用多條sed命令時使用. 直接在指令列模式上進行 sed 的動作編輯
-f∶指定sed指令碼的檔名. 直接將 sed 的動作寫在一個檔案內, -f filename 則可以執行 filename 內的sed 動作
-r∶sed 的動作支援的是延伸型正則表示式的語法。(預設是基礎正則表示式語法)
-i∶直接修改讀取的檔案內容,而不是由螢幕輸出
常用命令:
a ∶ 新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)
c ∶ 取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行
d ∶ 刪除,因為是刪除,所以 d 後面通常不接任何內容
i ∶ 插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行)
p∶ 列印,亦即將某個選擇的資料印出。通常 p 會與引數 sed -n 一起用
s∶ 取代,可以直接進行替換的工作。通常這個 s 的動作可以搭配正則表示式。例如 1,20s/old/new/g
例項:
1.列印#sed -n '1,3p' /etc/my.cnf
#sed -n '/basedir/p' /etc/my.cnf
#sed -n 's/basedir/datadir/p' /etc/my.cnf
#sed -n '/basedir/,/datadir/p' /etc/my.cnf
2.插入
#sed '2a user=mysql' /etc/my.cnf //在第二行之後插入
3.刪除
#sed '5,7d' /etc/my.cnf
4.替換
#sed -n 's/\[mysqld\]/& aaaa/p' /etc/my.cnf
[mysqld] aaaa
輸出奇數行或者偶數行
輸出奇數行
[[email protected] src]# sed -n '1~2p' /src/.user.txt
wangshui
nginx
wangs
apache
[[email protected] src]# awk 'NR%2' /src/.user.txt
wangshui
nginx
wangs
apache
輸出偶數行
[[email protected] src]# sed -n '2~2p' /src/.user.txtwangshui
nginxnginx
wangshui898
apacheapache
[
wangshui
nginxnginx
wangshui898
apacheapache
[[email protected] src]#