Linux常用文字處理指令
阿新 • • 發佈:2021-02-19
Linux常用文字處理指令
grep
最常用正則查詢指令,比如結合tail
tail 檔名 | grep -E "正則表示式" > "結果輸出檔名"
sed
sed適合用於對大檔案進行正則替換輸出
其處理是實時顯示(從檔案讀取一行匹配一行,結果輸出)
不會修改原檔案(新增g標記為全部替換,不新增為每行替換首個匹配項)
sed 's/正則表示式/替換文字/g'
如果需要保持輸出可以
sed 's/正則表示式/替換文字/g' > "輸出檔名"
find
find指令用於通過正則表示式檢索某個檔名所在的完整路徑
#查詢當前目錄及其所有子目錄下,名稱符合對應正則表示式的檔名
find . -name "正則表示式"
還可以結合xargs和grep對匹配的檔案的內容進行正則檢索
xargs會將檔案內容處理為按行輸入到緩衝區
find . -name "正則表示式" | xargs grep -E "檔案內容正則"
awk
awk是比較好用的指令,支援迴圈、正則和字典等
match函式接受的第一個引數為輸入,第二個引數為正則,返回是否存在匹配
substr函式接受的第一個引數為輸入,第二個引數為開始切割的下標,第三個引數為切割長度
awk中對於字典、變數不需要定義,第一次賦值即為定義
print函式進行列印輸出,帶雙引號的字串會作為多個列印的拼接符,並將引號中內容一併輸出
對於比較長的awk指令,一般寫到檔案通過shell執行(命令列需要為單行,awk不需要嚴格縮排,由{}控制作用域範圍)
以下為結合檔案,按行讀取作為輸入,使用字典和字串函式substr、index的示例
awk 'Begin{ while(getline < "輸入檔名"{ if(match($0,/正則/)){ var = substr($0,index($0,"subtext"), iLen) print var dict[key] = var } } close("輸入檔名") for (key in dict){ print key","dict[key] } }'
更多文章,請搜尋公眾號歪歪梯Club