フィールドを見つけて行末の前に移動します。

フィールドを見つけて行末の前に移動します。

次の行がありますが、「ABCD」を含むフィールドを見つけて、行の最後のフィールドの前に移動したいと思います。

string1;string2;xxxABCDxxx;string3;string4;string5;string6

出力

string1;string2;string3;string4;string5;xxxABCDxxx;string6

ベストアンサー1

sed 's/\([^;]*ABCD[^;]*;\)\(.*;\)/\2\1/' <in >out

これはトリックを行う必要があります。

それだけに適用されます最初仕事が起こるABCDしかし。行に複数がある場合、残りはすべてスキップされます。

最後のセミコロンを;スラッシュに置き換えるには、わずかに変更するだけです。

sed 's|\([^;]*ABCD[^;]*\);\(.*;\)|\2\1/|' <in >out

おすすめ記事