Unix cut命令将无序列表作为参数

时间:2010-08-05 05:51:23

标签: unix shell

Unix cut命令获取字段列表,但不是我需要它的顺序。

$ echo 1,2,3,4,5,6 | cut -d, -f 1,2,3,5
1,2,3,5

$ echo 1,2,3,4,5,6 | cut -d, -f 1,3,2,5
1,2,3,5

但是,我想要一个Unix shell命令,它会按照我指定的顺序给我字段。

3 个答案:

答案 0 :(得分:3)

使用:

pax> echo 1,2,3,4,5,6 | awk -F, 'BEGIN {OFS=","}{print $1,$3,$2,$5}'
1,3,2,5

或:

pax> echo 1,2,3,4,5,6 | awk -F, -vOFS=, '{print $1,$3,$2,$5}'
1,3,2,5

答案 1 :(得分:2)

或者只使用shell

$ set -f
$ string="1,2,3,4,5"
$ IFS=","
$ set -- $string
$ echo $1 $3 $2 $5
1 3 2 5

答案 2 :(得分:0)

基于Awk的解决方案很优雅。这是一个基于perl的解决方案:

echo 1,2,3,4,5,6 | perl -e '@order=(1,3,2,5);@a=split/,/,<>;for(@order){print $a[$_-1];}'