Транспонировать два поля в awk - PullRequest
4 голосов
/ 14 октября 2011

Предположим, что файл выглядит так:

a|b|c|d
a|b|c|d
...
a|b|c|d

Как мне переставить два поля, например:

c|b|a|d
c|b|a|d
...
c|b|a|d

Заранее спасибо!

Ответы [ 3 ]

4 голосов
/ 14 октября 2011

Вот еще одно решение: поменяйте местами первое и третье поля, затем напечатайте:

awk -F '|' '{ temp=$1; $1=$3; $3=temp; print }' data.txt
2 голосов
/ 14 октября 2011

Джерри был «прав», но есть гораздо более краткий способ сделать это

awk -F\| '{print $3FS$2FS$1FS$4}' input.csv

FS означает Разделитель поля. Вы можете изменить его на $ 3 "" $ 2 "" и т. Д., Если это проще

2 голосов
/ 14 октября 2011

По крайней мере, если память служит, что-то в этом общем порядке должно работать:

BEGIN { FS="|"; }

    { printf("%s|%s|%s|%s\n", $3, $2, $1, $4); }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...