Разве вы не узнаете очевидную опечатку в вашей первой команде наличия лишних пробелов в вашем совпадении с регулярным выражением?
echo "ABCD EFGH" | awk '{print gensub ( /( .+ ) ( .+ )/, "\\2 \\1", "g", $0 ) }'
# ^ ^ ^ ^ incorrect spaces defined
Это должно было быть определено, как показано ниже.Кроме того, вам не нужно указывать $0
в последнем аргументе, как это понимается и необязательно, т. Е. Если $0
не упоминается явно, операция по умолчанию занимает все $0
.
echo "ABCD EFGH" | awk '{print gensub ( /(.+) (.+)/, "\\2 \\1", "g") }'