1. 程式人生 > 其它 >Linux常用文字處理指令

Linux常用文字處理指令

技術標籤:便捷工具linuxlog文字處理

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函式接受的第一個引數為輸入,第二個引數為開始切割的下標,第三個引數為切割長度

index函式接受的第一個引數為輸入,第二個引數為要查詢的子串,返回從左往右找到的第一個子串的位置下標
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
更多資料,請搜尋公眾號歪歪梯Club