我需要通过 CL(命令行)将 .csv 转换为 .txt 格式并自动删除引号和特定的单词 - Linux。
例子: 我有多个导出的 csv 文件,其中包含:
- 第一行有:“地址”- 我想删除此行
- 接下来的几行内容如下:
"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 的建议):
- 使用
-i
,sed
用输出覆盖输入文件; - 使用
-i.bak,
sed` 还会保存未改变的输入文件,并将其重命名为 inputfile.bak; [^,]
使用(意味着:除了 之外的所有内容,
)和[^",]
(除了"
或 之外的所有内容,
)是因为 Kleene 星号(*
)是贪婪的:它们会尝试匹配尽可能多的内容。