Linux 如何从.CSV文件的两列中删除撇号(';)?

Linux 如何从.CSV文件的两列中删除撇号(';)?,linux,csv,sed,awk,apostrophe,Linux,Csv,Sed,Awk,Apostrophe,我有一个包含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,'8912

我有一个包含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删除第3列和第4列中的撇号?

在记事本上按CTRL+H,将“””替换为“”(无)

您可以使用awk:

awk -F, '{for (i=3;i<=4;i++) sub("'\''", "", $i)}1' OFS=, file

awk-F'{for(i=3;i如果根本不需要
,请将其删除到所有位置

awk '{gsub("'\''","")}1' file

他只能使用
sed
awk
,因此他的环境中不太可能有记事本,也不能像
sed
awk
那样编写脚本。此外,这将从所有列中删除撇号;他只想让它们从第三列和第四列中消失。不过,感谢Raza的回复,就像Justin一样说,我必须在linux环境中存在的一个.CSV文件中消除这个问题。你能解释一下上面代码中的替换是怎么做的吗?我看到代码中使用了3个撇号。另外,你能在
sed
中帮助实现这一点吗?你可以看到3个撇号,因为我们必须逃避它,否则我会t将终止字符串。
sed's/'\''\'//g'文件
是否适用于您,还是只需要第三列和第四列?所有列都有
'stuff
还是只有三列和四列?您能确保第x个撇号会出现在第三列或第四列吗?我这样问是因为您可以执行类似于
sed s/\'//3的操作
将每行中的第三个撇号替换为零。如果是这种情况,那么我们可以使用sed可靠地执行此操作。另一种情况是,我们可以可靠地执行此操作,即第三列和第四列是固定的length@PsychoData:前两列具有名称,我不确定这些列中的数据是否具有名称e任何撇号。此外,第三列和第四列不是固定长度的。它们是数字字段,数字的长度可能会有所不同……我们能想到其他解决方案吗?@Dhruuv如果我们不确定是否可以这样说,一行中的第三列和第四列,以及需要替换的列不在另一列中的固定模式中umn,那么我知道在没有使用awk的情况下,没有办法只替换第三列和第四列中的撇号。应该能够使用awk打印第一列和第二列,然后使用sed替换第三列和第四列中的撇号,然后打印其余列。但是sed中的sub命令已经可以正常工作了。我需要消除这个问题仅在文件的第3列和第4列中,因为我不想更改其他字段的数据,以防它们中有撇号…谢谢Jotne。