-1

誰かがこれをsed/awk/perlで分類するのを手伝ってくれますか

入力ファイル

Start variable 1
End   variable 2
A
Z
Next 

Start variable b
End   variable a 
X
Y
Next 
...
...
...

Start variable m
End   variable n
M
N
Next

パターン一致 Endが見つかった場合は、連続する行と交換します

出力ファイル:

Start variable 1
A
End variable 2 
Z
Next

Start variable b
X
End variable a
Y
Next
...
...
...

Start variable m
M
End variable n
N
Next
4

3 に答える 3

3

sed解決:

sed -n '/^End\s/{h;n;p;g};p' inputfile
于 2012-09-14T10:34:26.520 に答える
2

シンプルなPerlソリューション。$n「now」、$b「before」、つまり「前の行はEnd」を表します。

perl -ne 'print unless $n = /^End$/; print "End\n" if $b; $b = $n'

質問の更新バージョンについては、$l印刷する行を覚えておくために追加するだけです。

perl -ne 'print unless $n = /^End /; $l = $_ if $n ; print $l if $b; $b = $n'

または、同等ですが短い:

perl -ne '$n = /^End / and $l = $_ or print; $b and print $l; $b = $n'
于 2012-09-14T10:33:13.087 に答える
0
 sed -n '/^End/{h;n;G};p' inputfile

これは+

于 2013-04-18T11:18:18.973 に答える