我有一个像这样的 csv(定界符:逗号分隔)文件 A B C D 像上面这样的 csv 文件中大约有 10000 行。 无论在最后一个字段中写什么,我都必须用“e”更改。
例如。 输入文件
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 的一种方式:
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”,我们得到了解决方案。
关于linux - 修改完整 csv 文件的最后一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13743497/