我有一个类似的文件:
{{}} 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
或其他命令,这很好。
答案 0 :(得分:3)
如果行以{{}}
开头,则将其打印出来以保存以供日后使用,
perl -ne 'if (/^\Q{{}}/) {print}else{push @r,$_} }{print @r' file
答案 1 :(得分:3)
awk
的一种方式:
awk '$1!="{{}}"{move[++i]=$0;next}1 END{for(x=1;x<=length(move);x++)print move[x]}' file
答案 2 :(得分:2)
GNU代码sed:
sed -n 's/^\({{}}\)/\1/p;tk;H;:k;${x;s/\n//;p};d' file
$cat file {{}} line 1 {{}} line 2 line 3 line 4 {{}} line 5 line 6 $sed -n 's/^\({{}}\)/\1/p;tk;H;:k;${x;s/\n//;p};d' file {{}} line 1 {{}} line 2 {{}} line 5 line 3 line 4 line 6