2012-12-06 47 views
1

我喜欢这样的csv(分隔符:逗号分隔)文件 a,b,c,d csv文件中有近似10000行,如上所述。无论写在最后一场,我都必须改变'e'。修改完整的csv文件的最后一个字段

例如, 输入文件

a,b,c,d 
e,f,g,h 
i,j,k,l 
m,n,o,p 

输出文件

a,b,c,e 
e,f,g,e 
i,j,k,e 
m,n,o,e 

正如你可以看到d(第一行的最后一个元素)中,h(第二行的最后一个元素),L(第三行的最后一个元素),P(第四行最后一个元素) ...全部替换为'e'。

我如何在Linux上通过shell脚本来更改它。用awk

回答

4

方式一:

awk -F, '{$NF="e";}1' OFS=, file 

$NF指示文件的最后一个字段。只需将“e”设置为$ NF即可完成您的工作。 1是打印每一行。

-F =>指定输入字段分隔符, OFS =>指定O/P字段分隔

使用的sed还有一个选项:

要改变使用GNU代替文件sed的:

sed -i 's/\(.*,\).*/\1e/' file 

sed的格局,直到最后一个逗号和组它是可用的是\1匹配。通过追加“e”,我们得到了解决方案。

+0

请在这里多解释一下 – user595014

3
awk -F',' -v OFS=',' '{ print $1, $2, $3, "e" }' 

这种方法的缺点是它假设逗号不出现在字段本身。

相关问题