在寫 shell 腳本的時候經常會用到這兩種文本處理工具:sed
awk
熊昌;主要記錄一下兩者的常用方式:
sed
sed: stream editor
用例: sed 's/xxxx/xxxx/g' inputfile
- 逐行處理处面,可進行文本的查找氮趋、替換與刪除
- 可使用正則表達式
- 參數(shù): d 刪除:
sed '/The/d' inputfile
刪除包含 The 的行 - 參數(shù): s 替換:
sed 's/A/B/g' inputfile
常與參數(shù) g 結合進行全局替換
詳細參考:Sed 命令詳解 & 正則表達式
awk
- GNU AWK 是一種文本處理工具
- AWK 更是一種編程語言
- 執(zhí)行流程:
BEGIN block
---read lines and repeat command
---END block
- awk 用的最多的是根據(jù)匹配的行,打印選定的列或域:
awk '/a/ {print $1}'
- 可以通過在
BEGIN block
中通過 FS,RS,OFS,ORS來分別指定輸入域切厘、行分隔符和輸出域,行分隔符
awk 'BEGIN{FS="\n";RS="";ORS=""}{for(x=1;x<=NF;x++){print $x"\t"} print "\n"}' ./t.txt
詳細參考:W3School
Regex Tutorial For Linux (Sed & AWK) Examples
總結
shell中的文本處理工具除了上述外网缝,grep -e
也是一種很強大的工具巨税。