删除csv bash中的双引号
我有以下问题: 我有一个csv文件,里面有数据,如下所示:删除csv bash中的双引号,bash,csv,command-line,Bash,Csv,Command Line,我有以下问题: 我有一个csv文件,里面有数据,如下所示: “1,””name””,””surname””,””age””,””city””” “2,””Peter””,””Parker””,””30””,””NY””” “3,””marry””,””Jane””,””30””,””NY””” 1,”name”,”surname”,”age”,”NY” 3,”marry”,”Jane”,”30”,”NY” "1,""name"",""surname"",""age"",""city""" "
“1,””name””,””surname””,””age””,””city”””
“2,””Peter””,””Parker””,””30””,””NY”””
“3,””marry””,””Jane””,””30””,””NY”””
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"""
是否可以使用bash删除每行的第一个和最后一个双引号,然后删除其中每个字段的第一个和最后一个双引号?
要得到这样的东西:
“1,””name””,””surname””,””age””,””city”””
“2,””Peter””,””Parker””,””30””,””NY”””
“3,””marry””,””Jane””,””30””,””NY”””
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"""
如果您能给我一些提示,我将不胜感激。感谢让您开始:
echo '"1,""name"",""surname"",""age"",""city"""' | sed "s/\"\"/\"/g" | sed 's/^\"\(.*\)\"$/\1/'
输出
您可以将其调整为逐行运行一个文件(而不是第一个
echo
并输出到另一个文件中,假设您的输入如下所示:
“1,””name””,””surname””,””age””,””city”””
“2,””Peter””,””Parker””,””30””,””NY”””
“3,””marry””,””Jane””,””30””,””NY”””
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”
虽然我认为这个输入在你的问题中是一个转置错误。使用
sed
:
sed 's/^"\(.*\)"$/\1/;s/"\+/"/g' file
第一个替换将删除整行的外部双引号
第二个替换将参数quote替换为一个双引号。欢迎使用SO,我们鼓励用户增加他们为解决自己的问题所付出的努力,因此请添加相同的努力,然后让我们知道。这些是“还是”?也有三行而不是两行。这些是,是的,结尾有三个字段,但正如您所看到的,第一个带编号的字段没有结尾的字段。第二行发生了什么?看起来像是一个单列CSV文件,其中每个字段本身是CSV文件中的一行。是什么生成了该文件?