Как переместить первое слово в конец с помощью bash?
eg. "super duper" => "duper super"
Текст всегда будет состоять из двух слов.
Немного короче версия с awk. Это поменяет местами первое и последнее слова независимо от числа между
awk
awk '{t=$1;$1=$NF;$NF=t}1'
$ echo "super califragilisticly duper" | awk '{t=$1;$1=$NF;$NF=t}1' duper califragilisticly super
while read -r word1 word2 do echo "$word2 $word1" done <<< "super duper"
не проверено ответ по телефону
Попробуйте это ...
sed -e "s/\([^ ]*\) *\([^ ]*\)/\2 \1 /g" filename
Получите группу захвата для каждого слова и каждого, а затем поменяйте местами их обратными ссылками.
Еще один вариант использования инструментов оболочки:
ghoti@pc:~$ tac -b -s\ <<< "super duper" | paste - - duper super
в прямой ш, для двух слов:
swapwords() { echo $2 $1 } swapwords super duper => duper super swapin() { read first last echo $last $first } echo super duper | swapin => duper super