我有像这样的csv(delimiter:commaseparated)文件 A B C D 在csv文件中有大约10000行,如上所述。 无论在最后一场写什么,我都要用'e'改变。
EG。 输入文件
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脚本来改变它。
答案 0 :(得分:5)
使用awk的一种方式:
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”,我们就可以得到解决方案。
答案 1 :(得分:3)
awk -F',' -v OFS=',' '{ print $1, $2, $3, "e" }'
这种方法的一个缺点是假设逗号不会出现在字段本身中。