Ну, вы на самом деле на верном пути, просто нужно установить OFS
, а также добавить условие:
awk -F'|' -v OFS="|" '/james/{print $3,$2,$1}' input.txt
Так что с помощью этой одной команды вы можете делать то, что вам не нужно передаватьgrep.
И если есть много столбцов, которые нужно повернуть вспять:
awk -F'|' '/james/{for(i=1;i<=NF/2;i++){j=NF-i+1;t=$i;$i=$j;$j=t}print}' OFS='|' input.txt
Здесь я использовал другой подход, на самом деле обмениваясь высокими столбцами с низкими столбцами и назначая OFS
передвходные файлы, сохраненные необходимость -v
.
Ну, если вы хотите сохранить пробелы тоже , используйте эти GNU awk
решения:
awk -F' *[|] *' -v OFS=' | ' '/james/{print $3,$2,$1}' input.txt
james | kfjlds | abdkfsj
james | dskljoer | sdjfsdl
$ awk -F' *[|] *' '/james/{for(i=1;i<=NF/2;i++){j=NF-i+1;t=$i;$i=$j;$j=t}print}' OFS=' | ' input.txt
james | kfjlds | abdkfsj
james | dskljoer | sdjfsdl