2013-10-28 26 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