Сед двигаться первым до конца - PullRequest
3 голосов
/ 27 января 2012

Как переместить первое слово в конец с помощью bash?

eg. "super duper"
=> "duper super"

Текст всегда будет состоять из двух слов.

Ответы [ 5 ]

2 голосов
/ 27 января 2012

Немного короче версия с awk. Это поменяет местами первое и последнее слова независимо от числа между

awk '{t=$1;$1=$NF;$NF=t}1'

Выход

$ echo "super califragilisticly duper" | awk '{t=$1;$1=$NF;$NF=t}1'
duper califragilisticly super
1 голос
/ 27 января 2012

С Bash:

while read -r word1 word2
do
echo "$word2 $word1"
done <<< "super duper"

не проверено ответ по телефону

1 голос
/ 27 января 2012

Попробуйте это ...

sed -e "s/\([^ ]*\) *\([^ ]*\)/\2 \1 /g" filename

Получите группу захвата для каждого слова и каждого, а затем поменяйте местами их обратными ссылками.

0 голосов
/ 27 января 2012

Еще один вариант использования инструментов оболочки:

ghoti@pc:~$ tac -b -s\ <<< "super duper" | paste - -
 duper  super
0 голосов
/ 27 января 2012

в прямой ш, для двух слов:

swapwords() {
    echo $2 $1
}

swapwords super duper

=> duper super

swapin() {
    read first last
    echo $last $first
}

echo super duper | swapin

=> duper super
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...