我有一个类似的文件:
{{}} 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
或其他命令都可以)。
我有一个类似的文件:
{{}} 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
或其他命令都可以)。
一种方法awk
:
awk '$1!="{{}}"{move[++i]=$0;next}1 END{for(x=1;x<=length(move);x++)print move[x]}' file
如果行以 开头{{}}
,则打印,否则保存以备后用,
perl -ne 'if (/^\Q{{}}/) {print}else{push @r,$_} }{print @r' file
GNU sed的代码:
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 行