Bash
僅將逗號分隔的字元串封裝在引號中
我有一些數據目前是 TSV 格式,但需要轉換成 CSV 格式。唯一的問題是,偶爾在 TSV 中,有些值包含的逗號並不總是在同一列中(每個實例的逗號數量也可能不同)。我想將這些逗號分隔的字元串封裝在引號中,以便 CSV 可以正確解析。
我有什麼(TSV):
Freddy, Jasmine, and Lucy 412 Penguin Maggie 5,432 salad Joe 4 John Smith, PhD
我想要什麼(CSV):
"Freddy, Jasmine, Lucy",412,Penguin this,"5,432",salad Joe,4,"John Smith, PhD"
有沒有辦法在 bash 中做到這一點?
csvformat
來自CSVKit的工具將完全滿足您的需求:csvformat --tabs inputFile.dat
例子
printf "%s\n" \ $'Freddy, Jasmine, and Lucy\t412\tPenguin' \ $'Maggie\t5,432\tsalad' \ $'Joe\t4\tJohn Smith, PhD' >inputFile.dat csvformat --tabs inputFile.dat
輸出
"Freddy, Jasmine, and Lucy",412,Penguin Maggie,"5,432",salad Joe,4,"John Smith, PhD"
這種事情的另一個有用工具是米勒- 借用@roaima的輸入文件
$ mlr --itsv --ocsv cat inputFile.dat "Freddy, Jasmine, and Lucy",412,Penguin Maggie,"5,432",salad Joe,4,"John Smith, PhD"