将 CSV 转换为文本并自动删除引号和特定单词 - Linux

将 CSV 转换为文本并自动删除引号和特定单词 - Linux

我需要通过 CL(命令行)将 .csv 转换为 .txt 格式并自动删除引号和特定的单词 - Linux。

例子: 我有多个导出的 csv 文件,其中包含:

  1. 第一行有:“地址”- 我想删除此行
  2. 接下来的几行内容如下:
"https://www.example.com/21"
    
"https://www.example.com/22"
    
...
    
"https://www.example.com/99000"

在第 2 点中我想删除引号。

我尝试了多个 sed 和 awk 命令但都失败了。

答案1

$ cat filename.csv 
"Address"
"https://www.example.com/21"
"https://www.example.com/22"
...
"https://www.example.com/99000"
$ sed -n '2,$s/"//gp' filename.csv > filename.txt
$ cat filename.txt 
https://www.example.com/21
https://www.example.com/22
https://www.example.com/99000

如果你也想要;只需在 g 和 p 之间...添加一个;gp

答案2

sed [-i[suffix]] 's/^[^,]*,"\([^",]*\)"/\1/' inputfile

解释(感谢@Hannu 的建议):

  • 使用-ised用输出覆盖输入文件;
  • 使用-i.bak,sed` 还会保存未改变的输入文件,并将其重命名为 inputfile.bak;
  • [^,]使用(意味着:除了 之外的所有内容,)和[^",](除了"或 之外的所有内容,)是因为 Kleene 星号(*)是贪婪的:它们会尝试匹配尽可能多的内容。

相关内容