在Shell脚本的一行中合并多个切割的输出

问题描述

我试图在一行脚本中用-将三个剪切函数输出连接起来。我尝试如下,但不会工作。我该怎么办?

echo "$(cut -d',' -f2 FILE.csv)-$(cut -d',' -f1 FILE.csv)-$(cut -d',' -f3 FILE.csv)"

解决方法

使用awk更改定界符:

awk -F,'{ print $2,$1,$3 }' OFS='-' FILE.csv

或使用csvkit命令(如果文件具有更复杂的CSV,并且带引号的字段或逗号分隔的多行字段中的逗号无法正确处理,则特别有用):

csvcut --columns 2,1,3 FILE.csv | csvformat -D'-'