我遇到以下问题:
我有带有数据的csv文件,看起来像这样:
“1,””name””,””surname””,””age””,””city”””
“2,””Peter””,””Parker””,””30””,””NY”””
“3,””marry””,””Jane””,””30””,””NY”””
是否可以使用bash删除每行中的第一和最后一个双引号,然后删除其中每个字段的第一和最后一个双引号?得到这样的东西:
1,”name”,”surname”,”age”,”NY”
3,”marry”,”Jane”,”30”,”NY”
我将感谢您的一些提示。谢谢
假定您的输入看起来像这样:
"1,""name"",""surname"",""age"",""city"""
"2,""Peter"",""Parker"",""30"",""NY"""
"3,""marry"",""Jane"",""30"",""NY"""
请注意实际的"
不是您代码中的””
:
然后您就可以将多件东西合在一起,例如,将它们链接在一起
sed -e "s/\"\"\"/\"/g" -e "s/\"\"/\"/g" input.txt
[这首先替换了三引号"""
,将其减少为双引号""
,然后进一步将其减少。
最终输出:
"1,"name","surname","age","city"
"2,"Peter","Parker","30","NY"
"3,"marry","Jane","30","NY"
如果您有特殊字符,只需将其替换为代码,例如:
$ cat input.txt
“1,””name””,””surname””,””age””,””city”””
“2,””Peter””,””Parker””,””30””,””NY”””
“3,””marry””,””Jane””,””30””,””NY”””
$ sed -e "s/\”\”\”/\”/g" -e "s/\”\”/\”/g" input.txt
“1,”name”,”surname”,”age”,”city”
“2,”Peter”,”Parker”,”30”,”NY”
“3,”marry”,”Jane”,”30”,”NY”
尽管我认为此输入是您问题中的转置错误。