sed:一致するものが見つかったら、前の行のテキストの一部を置き換えます。

sed:一致するものが見つかったら、前の行のテキストの一部を置き換えます。

次の行にが含まれている場合は、create_testファイルをに置き換えたいと思います。 sedを使用してファイルを含むファイル全体を処理するにはどうすればよいですか?#create_testpsfxxx_16_pi

入力ファイルの内容:

create_test -type hard -outer { 1.0000 } { \
    psfxxx_16_pi/psfop/deadline_north_re_0 }

create_test -type hard -outer { 0.0000 } { \
    psfxxx_16_pi/psfop/deadline_south_re_1 }

結果ファイル:

#create_test -type hard -outer { 1.0000 } { \
    psfxxx_16_pi/psfop/deadline_north_re_0 }

#create_test -type hard -outer { 0.0000 } { \
    psfxxx_16_pi/psfop/deadline_south_re_1 }

ベストアンサー1

努力する

sed '/^create_test/ {N; /psfxxx/ s/^/#/}' file
#create_test -type hard -outer { 1.0000 } { \
    psfxxx_16_pi/psfop/deadline_north_re_0 }

#create_test -type hard -outer { 0.0000 } { \
    psfxxx_16_pi/psfop/deadline_south_re_1 }

create_test -type hard -outer { 1.0000 } { \
    vsfxxx_16_pi/psfop/deadline_north_re_0 }

create_test -type hard -outer { 0.0000 } { \
    vsfxxx_16_pi/psfop/deadline_south_re_1 }

「create_test」が見つかった場合は、次の行を追加し、行に「psfxxx」が含まれている場合は「#」プレフィックスが付きます。

おすすめ記事