Sed首先结束

时间:2012-01-27 02:06:09

标签: bash unix sed

如何用bash将第一个单词移到最后?

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

文字永远是两个单词。

5 个答案:

答案 0 :(得分:2)

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 :(得分:1)

试试这个......

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

为每个单词和每个单词获取一个捕获组,然后将它们与后面的引用进行交换。

答案 2 :(得分:1)

使用Bash:

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

未经过测试通过电话接听

答案 3 :(得分:0)

直言不讳地说两句话:

swapwords() {
    echo $2 $1
}

swapwords super duper

=> duper super

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

echo super duper | swapin

=> duper super

答案 4 :(得分:0)

使用shell工具的另一种选择:

ghoti@pc:~$ tac -b -s\ <<< "super duper" | paste - -
 duper  super