Unix cut команда, принимающая неупорядоченный список в качестве аргументов - PullRequest
2 голосов
/ 05 августа 2010

Команда 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, которая даст мне поля в указанном порядке.

Ответы [ 3 ]

3 голосов
/ 05 августа 2010

Использование:

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
2 голосов
/ 05 августа 2010

Или просто используйте оболочку

$ set -f
$ string="1,2,3,4,5"
$ IFS=","
$ set -- $string
$ echo $1 $3 $2 $5
1 3 2 5
0 голосов
/ 05 августа 2010

Решение на основе Awk элегантно.Вот решение на основе Perl:

echo 1,2,3,4,5,6 | perl -e '@order=(1,3,2,5);@a=split/,/,<>;for(@order){print $a[$_-1];}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...