2012-11-29 39 views
1

我想知道是否有辦法讓awk輸出它所做更改的次數,或者以某種方式跟蹤它的更改。例如,如果有一個.csv文件,其中我用awk用「it」替換單詞「the」,是否有辦法讓awk輸出多少次,找到並替換「the」內部的.csv文件?我一直在搜索谷歌+本網站的其餘部分,但一直未能找到任何東西,不知道如果我只是以錯誤的方式或類似的東西,但如果有人可以幫助我這個雖然我真的很感激,謝謝!有沒有辦法讓awk跟蹤它所做的更改

回答

2

據我所知,awk無法自動計算替換值。我們必須手動總結數字。例如,你的「」 - >「它」:

gawk '{x+=gsub("the","it");print} END{print "total changes:"x}' file.csv 
+0

+1這是正確的答案貼出的問題,所以如果它不是OP想要什麼,然後他(她)需要改寫這個問題,給出一些樣本輸入和期望的輸出。 –

+0

完美工作,謝謝!比如它如何使用gsub,正在計劃使用它,但不知道如何實現計數部分 – lacrosse1991

2

只要在awk腳本中用「it」替換「the」,就增加一個計數器。然後在你的awk腳本的末尾打印計數器,把它放在END塊中。

一個簡單的例子,你只更換「the」中的第1列中:

awk 'BEGIN{FS=OFS=","} 
    {if ($1 == "the") {$1 = "it"; counter++; print}} 
    END{print counter}' input.csv 

但你希望做的是簡單地計算這個詞/模式‘的’發生了多少次什麼原來.cvs文件裏面,你可以簡單地做:

grep -c "the" input.csv 

或者根據您的.csv格式:

grep -c " the," input.csv 
相關問題