我有一个巨大的 300MB 文本文件,它是一个管道分隔的 CSV。
Some Writing, Is|Another Field|Anotherfie,ld.
Some Writing, Is|Another Field|Anotherfie,ld.
Run Code Online (Sandbox Code Playgroud)
bash shell 有没有办法将其转换为:
"Some Writing, ","Another Field","Anotherfie,ld."
Run Code Online (Sandbox Code Playgroud)
使用 sed:
sed 's/^/"/;s/|/","/g;s/$/"/' file
Run Code Online (Sandbox Code Playgroud)
输出:
“一些写作,是”,“另一个领域”,“另一个领域,ld”。 “一些写作,是”,“另一个领域”,“另一个领域,ld”。
如果您想“就地”编辑文件,请添加 sed 的选项-i
。
您可以使用sed
它的替换命令:
s/^/"/
"
将在每行的开头替换(插入)一个符号。
s/|/","/g
将用三元组替换每个|
字符","
。请注意g
命令末尾的字母,它指示它替换所有 |
出现的位置,而不仅仅是第一个。
最后:将在每行末尾
s/$/"/
替换(附加)一个符号。"
所以最终命令将是:
`cat filename.in | sed 's/^/"/;s/|/","/g;s/$/"/` > filename.out`
Run Code Online (Sandbox Code Playgroud)