sed:要素を1行に移動

sed:要素を1行に移動

だから私はPerlで次のことをしたいと思います。

if (/number=[0-9]*;/){ print "$&$`$'";}

sedでこれは可能ですか?つまり、線の一部を分けて中央から前方に移動させたいのです。

ベストアンサー1

sed 's/\(.*\)\(number=[0-9]*;\)/\2\1/'

ただし、複数回発生するとnumber[0-9]*;最後の項目が移動します(なぜなら貪欲 .*)。最初の項目を移動します。

sed -ne 's/number=[0-9]*;/\
&\
/; s/\(.*\)\n\(.*\)\n/\2\1/p'

つまり、を使用する代わりに.*(今回はじめて)パターンが改行文字(パターンスペースに現れない唯一の文字)に発生するため、次のコマンドは一致をs一意に識別できます。

入力が有効なテキストであると仮定します(特に有効な文字を形成しないバイトシーケンスはありません)。

perlたとえば、コマンドラインで使用することもできます。

 perl -pe 'if (/number=[0-9]*;/) {$_ = "$&$`$'"}'

または

 perl -pe 's/(.*?)(number=[0-9])/$2$1/'

おすすめ記事