Csv
在欄位中轉義分隔符時轉換分隔符
我有一個文本文件,其中的欄位由
|
. 我想將其轉換為,
典型的 CSV。我試過用這個:sed 's/|/,/g' test.txt > test.csv
但有些欄位中已經有逗號。例如:
var1|var2|var3 Potter, Harry|2|3
我該怎麼辦?
使用正確的 csv 解析器工具:
csvtool -t '|' -u ',' cat infile > outputfile var1,var2,var3 "Potter, Harry",2,3
來自
csvtool --help
:-t Input separator char. Use -t TAB for tab separated input. -u Output separator char. Use -u TAB for tab separated output. cat This concatenates the input files together and writes them to the output. You can use this to change the separator character.
僅引用包含逗號的值:
$ sed 's/[^|]*,[^|]*/"&"/; y/|/,/' <infile var1,var2,var3 "Potter, Harry",2,3
如果輸入已經包含雙引號字元,並且它們沒有用於 CSV 格式(如 for
Riddle, Tom "Voldemort"|4|5
),那麼對於大多數 csv 格式,您可以使用""
:$ sed 's/"/""/g; s/[^|]*[,"][^|]*/"&"/; y/|/,/' <infile "Riddle, Tom ""Voldemort""",4,5