0

我有一个类似的文件:

{{}} line 1
{{}} line 2
line 3
line 4
{{}} line 5
line 6

我想要做的是将文件的最后一行以 为前缀移动到倒数{{}}第二行之后{{}},因此最终结果将是:

{{}} line 1
{{}} line 2
{{}} line 5
line 3
line 4
line 6

它必须是bash(调用sed, perl,head或其他命令都可以)。

4

3 回答 3

3

一种方法awk

awk '$1!="{{}}"{move[++i]=$0;next}1 END{for(x=1;x<=length(move);x++)print move[x]}' file
于 2013-06-23T22:00:00.277 回答
3

如果行以 开头{{}},则打印,否则保存以备后用,

perl -ne 'if (/^\Q{{}}/) {print}else{push @r,$_} }{print @r' file
于 2013-06-23T21:48:55.330 回答
2

GNU 的代码:

sed -n 's/^\({{}}\)/\1/p;tk;H;:k;${x;s/\n//;p};d' file

$猫文件
{{}} 第 1 行
{{}} 第 2 行
3号线
第 4 行
{{}} 第 5 行
第 6 行

$sed -n 's/^\({{}}\)/\1/p;tk;H;:k;${x;s/\n//;p};d' 文件
{{}} 第 1 行
{{}} 第 2 行
{{}} 第 5 行
3号线
第 4 行
第 6 行
于 2013-06-24T03:57:09.717 回答