我有一个包含 7 个字段的 .CSV 文件,该文件的第 3 列和第 4 列有一个以撇号 ( ' ) 开头的数字。请看下面的例子。
col0,col1,col2,col3,col4,col5,col6,
1value0,1value1,'8972991766941,'8972991766941,1value4,1value5,1value6,
2value0,2value1,'8912988876583,'8912988876583,2value4,2value5,2value6,
3value,3value1,'8912981226981,'8912981226981,3value4,3value5,3value6,
2value0,4value1,'8912971783681,'8912971783681,4value4,4value5,4value6,
如何仅使用 sed 或 awk 去掉第三列和第四列中的撇号?
答案1
你可以这样做awk
,这个想法是运行一个子在第 3 列和第 4 列上设置命令,将单引号替换为空格。这里\047
代表 的八进制代码'
。
awk -F, -v OFS=, '{sub(/\047/, "", $3); sub(/\047/, "", $4); print}' file.txt
答案2
使用另一个引号四分之一
sed "s/'//g" file
或结束引用,转义撇号并再次开始引用
sed 's/'\''//g' file
在这种情况下,除了对 shell 有特殊含义的撇号之外,不需要引号
sed s/\'//g file
这也可以使用双引号来完成
sed s/"'"//g file
在阅读这篇文章的评论后,我意识到我没有解决最初的问题,而是更正了OP评论中的命令帖子。