linux命令行與shell腳本大全_第十八章_初識sed和gawk

1.sed語法


例子:

(1)從stdout流中讀取數據

echo "This is a test" | sed 's/test/big test/'

(2)執行多條命令,-e選項,命令用分號隔開,封號前面不能有空格

echo "This is a test" | sed -e 's/test/big test/;s/This/That/'

(3)命令和多可以採用-f選項將命令放在文件中,每一行一個命令

sed -f command.txt filename


2.gawk基本語法




gawk,可以使用多條命令,命令之間用封號分開:

例子:替換第4個字段

echo "My name is Rich" | gawk '{$4="Christine" ;print $0}'

My name is Christine


ctrl+d :產生一個eof 符,可以結束gawk命令的輸入



gawk字段變量的使用:



採用-F手動指定分割符,想使用單詞,或單詞間有空格請用""引起來,否則會報錯

gawk -F: '{print $1}' /etc/passwd



gawk讀取文件中命令:



gawk:引用變量無需使用$符

gawk採用BEGIN關鍵字,執行處理數據之前的腳本,END關鍵字處理數據處理完的情形.重複使用會產生累加效果。

echo "My name is Rich" | gawk 'BEGIN{print "The gawk test"}END{print "This is end"}{$4="Christine" ;print $0}'


3.sed替換標記






4.sed的替換字符:當遇到需要轉義的字符,可以用!等符號作爲/的替換,甚至可以用數字,不過使用了文本中這些符號如果要使用同樣要轉義。。。轉義數字?




4.使用地址

sed的作用範圍是全體內容,有時只想操作指定內容,這樣就需要指定範圍。


尋址方式:




1.數字方式尋址

(1)指定行數:sed '1s/brown/blue/' sed_data.txt替換第一行

(2)指定行範圍:sed '2,3s/brown/yellow/' sed_data.txt 替換2-3行

(3)使用$符號,統配到文章末尾:sed '2,$s/brown/yellow/' sed_data.txt  替換第2到文本末尾


2.使用文本模式過濾

sed '/quick1/s/brown/yellow/' sed_data.txt   過濾有quick1的文本


3.組合命令

sed '2{s/brown/bluely/ 
s/fox/dog/
}' sed_data.txt




5.刪除行

(1)刪除全部 :sed 'd' sed_data.txt 

(2)刪除指定行:sed '2d' sed_data.txt   刪除第二行

(3)刪除指定範圍:sed ‘2,3d’ sed_data.txt  刪除第二和第三行

(4)刪除指定行到末尾:sed '2,$d' sed_data.txt 刪除第二到末尾

(5)通過模式進行刪除:sed '/1/,/2/d' sed_data.txt 刪除文本第一次出現1直到出現2結束(刪除的包括2)如果沒匹配到2,則會刪除1後面匹配的所有行


6.插入和追加





追加命令用a:在匹配的後面加上新的一行

插入命令用 i:在匹配的前面插入一行



7.修改行


sed '3c\this is a changed line of text.' sed_data.txt    替換第3行
sed '2,3c\this is a changed line of text.' sed_data.txt  把第2和第3行替換


8.轉換字符



echo "This 1 is a test of 1 try"|sed 'y/123/456/'        替換1爲4


9.回顧打印






(1)sed '/hello/p' sed_data.txt         打印匹配到的hello
(2)sed -n '/hello/p' sed_data.txt   -n 禁止打印非匹配的行
(3)sed -n '/hello/l' sed_data.txt       l可以打印非可見字符
(4)sed -n '/hello/=' sed_data.txt    打印行號



10.文件操作

(1)寫文件

sed '1,2w 123' sed_data.txt 寫入到文件123中

(2)讀文件

sed '/12/r 123' sed_data.txt 讀取123文件中匹配12的到sed_data.txt中


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章