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