Bash - 将最后一个单词移到行首

时间:2015-08-23 21:39:28

标签: linux bash

我需要将(在文本文件中)行中的最后一个单词移动到该行的开头。

来自:

I Am Legend (2007)
RoboCop (1987)
Shrek (2001)

To This:

(2007) I Am Legend
(1987) RoboCop
(2001) Shrek

2 个答案:

答案 0 :(得分:4)

使用GNU sed:

sed 's/\(.*\)\((.*)\)/\2 \1/' file

输出:

(2007) I Am Legend 
(1987) RoboCop 
(2001) Shrek 

要“就地”编辑文件:

sed -i 's/\(.*\)\((.*)\)/\2 \1/' file

答案 1 :(得分:3)

我会使用awk

awk '{l=$NF;$NF=NF-1;print l,$0}' input.file

我将最后一个单词存储在变量l中,然后将字段数减少1(是的,这是可能的),然后打印最后一个单词加上剩余的行。