我有一个csv(delimiter:commaseparated)文件,像这样的a,b,c,d在csv文件中有大约10000行,如上所述.无论在最后一场写什么,我都要用'e'改变.
例如.输入文件
a,b,c,d
e,f,g,h
i,j,k,l
m,n,o,p
Run Code Online (Sandbox Code Playgroud)
输出文件
a,b,c,e
e,f,g,e
i,j,k,e
m,n,o,e
Run Code Online (Sandbox Code Playgroud)
正如你可以看到d(第一行最后一个元素),h(第二行最后一个元素),l(第三行最后一个元素),p(第四行最后一个元素)......所有都被'e'替换.
我如何通过Linux上的shell脚本来改变这一点.
使用awk的一种方法:
awk -F, '{$NF="e";}1' OFS=, file
Run Code Online (Sandbox Code Playgroud)
$NF表示文件的最后一个字段.只需将"e"设置为$ NF即可完成工作.1是打印每一行.
-F=>指定输入字段分隔符,
OFS=>指定o/p字段分隔符
使用sed的另一个选项:
使用GNU sed更改文件:
sed -i 's/\(.*,\).*/\1e/' file
Run Code Online (Sandbox Code Playgroud)
sed将模式匹配到最后一个逗号,并对可用的组进行分组\1.只需附加"e",我们就可以得到解决方案.