2013-10-28 102 views
1

我探索SED功能sed命令插入文本 - 慶典

什麼我這裏是低於

標識,水果名稱及數量顯示簡單的文本文件。現在我想添加的每個水果的分別數量

fruit.txt背後的水果量

1,apple 
2,banana 

如何使它變成這個樣子。

預期輸出

sed命令

我的文本文件(fruit.txt)的第一個輸入變成這個樣子

1,apple,50 
2,banana,40 

回答

1

用sed這樣的:

sed -i -r 's/(apple)(,[0-9]*)?$/\1,10/' 

sed -i -r 's/(apple)(,[0-9]*)?$/\1,20/' 

sed -i -r 's/(apple)(,[0-9]*)?$/\1,30/' 
+1

的感謝! – user2928337

+1

不客氣,很高興它爲你工作。 – anubhava

+0

抱歉打擾你了,你是否能解釋像什麼是-R,S /等我在正則表達式糟透了。據我所知,** - 我被插入**,** /秒(蘋果)是指從蘋果開始**和**([0-9 *])是指與任何數量開始從0-9和比賽任何背後的**。我不確定?$/\ 1,30/part – user2928337

1

使用AWK:

awk -F, -v OFS="," '/apple/{$3="whatever"}7' file 

,但如果你沒有了GNU AWK 4.1,你必須這樣做是爲了寫回文件:幫助

awk -F, -v OFS="," '/apple/{$3="whatever"}7' file >~/foo.tmp && mv ~/foo.tmp file 
+0

感謝您的幫助! – user2928337

+0

'7'做什麼?我假設它回寫到原始文件,比如'sed -i'。我在哪裏可以得到這些數字的名單及其含義? – anishsane

+1

@anishsane'7'(任何非零數字)都執行默認awk動作,即「print」 – Kent