我有一个以管道分隔的输入csv,我想从中选择几列然后另存为逗号分隔文件。
使用下面的代码我可以读取输入csv并将所选列保存为新的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 ...]
答案 0 :(得分:2)
我的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 $1, $2, $15, $28, $29, $30, $31, $35}' \
< input_file.csv >output_file.csv
干杯