我有一个文件,其中有10000+记录。有一些坏的记录,其中有/”之间的值如下。这是逗号delimeter文件。我不能使用-E GNU选项。
"22-11-2020","ABCD",,"ABCD/4400","7644","NY","NY","LAX","ABC","16-09-2023","25-09-2023","02-10-2023","660802","993 14\" X 8\"","28-09-2023",4,"CA",2586,"AA",65.850000,6895.200000,"01-11-2023"
字符串
我需要从第14列删除/替换“。我试过下面的命令,但它替换了所有的双引号,但不是\。
sed 's/'\"'/''/g' File
型
需要输出如下:
"22-11-2020","ABCD",,"ABCD/4400","7644","NY","NY","LAX","ABC","16-09-2023","25-09-2023","02-10-2023","660802","993 14 X 8","28-09-2023",4,"CA",2586,"AA",65.850000,6895.200000,"01-11-2023"
型
3条答案
按热度按时间ecbunoof1#
假设您只需要将字符串
\"
替换为空字符串,则以下sed
命令应该可以工作:字符串
如果你只想在第14列中这样做,你可以使用
awk
;型
klr1opcd2#
使用这个Perl一行程序:
字符串
要就地更改文件,请执行以下操作:
型
Perl一行程序使用以下命令行标志:
-e
:告诉Perl在线查找代码,而不是在文件中。-n
:一次循环一行输入,默认情况下将其分配给$_
。-l
:在执行代码之前去掉输入行分隔符(默认情况下,*NIX上为"\n"
),并在打印时附加它。-a
:将$_
拆分为数组@F
,使用空格或-F
选项中指定的正则表达式。-F,
:在,
上拆分为@F
,而不是在空白处拆分。-i.bak
:就地编辑输入文件(覆盖输入文件)。在重新编译之前,通过将扩展名.bak
附加到原始文件的名称中来保存原始文件的备份副本。如果您想跳过写入备份文件,只需使用-i
并跳过扩展名。正则表达式使用这个修饰符:
/g
:重复匹配模式。另请参阅:
perldoc perlrun
:如何执行Perl解释器:命令行开关perldoc perlre
: Perl regular expressions (regexes)perldoc perlrequick
: Perl regular expressions quick start的hgncfbus3#
这可能对你有用:
字符串
向后迭代第14个字段,删除每个
\"
并返回结果。