Unix的cut
命令接受字段列表,但不是为了我需要进去。Unix的切割命令采取无序列表作为参数
$ 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命令即会请按照我指定的顺序向我提供字段。
Unix的cut
命令接受字段列表,但不是为了我需要进去。Unix的切割命令采取无序列表作为参数
$ 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命令即会请按照我指定的顺序向我提供字段。
用途:
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
基于awk中的解决方案是优雅。这是一个基于Perl的解决方案:
echo 1,2,3,4,5,6 | perl -e '@order=(1,3,2,5);@a=split/,/,<>;for(@order){print $a[$_-1];}'
与后来的Perl中,有-F选项:) – ghostdog74 2010-08-05 06:14:43