使用 cut 将竖线分隔转换为逗号分隔

Using cut to Convert Pipe-Delimited to Comma-Delimited

我有一个管道分隔的输入 csv,我想从中 select 几列,然后另存为逗号分隔文件。

使用下面的代码我可以读取输入的 csv 并将 selected 列保存为新的 csv,但它仍然是管道分隔的:

cut -d "|" -f1-2,15,28-31,35 < input_file.csv > output_file.csv

当我尝试使用 output-delimiter 选项时,出现非法选项错误。

我试过了:

cut -d "|" -f1-2,15,28-31,35 --output-delimiter="," < input_file.csv > output_file.cv

cut -d "|" -f1-2,15,28-31,35 < input_file.csv > output_file.csv --output-delimiter=","

但是我得到一个错误

cut: illegal option -- -
usage: cut -b list [-n] [file ...]
       cut -c list [file ...]
       cut -f list [-s] [-d delim] [file ...]

我的 cut 不理解 --output-delimiter 指令。您确定您有 cut 的版本吗?

一个想法是先将 | 翻译成 ,,然后剪掉:

tr '|' ',' < input_file.csv | cut -d ',' -f1-2,15,28-31,35 > output_file.csv

另一个选项是 awk,它理解输入和输出的不同字段分隔符:

awk 'BEGIN {FS="|"; OFS=","} 
           {print , , , , , , , }' \
     < input_file.csv >output_file.csv

干杯