使用 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
干杯
我有一个管道分隔的输入 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
干杯