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中