grepの後に見つかったテキストの横にあるテキストをどのように変更しますか?

grepの後に見つかったテキストの横にあるテキストをどのように変更しますか?

たとえば、Linux環境には、次のテキストを含むtest1ファイルがあります。

DB_UP
sqlplus DB_UP test1.sql
DB_UP

sqlplusの横にあるDB_UPを削除したいと思います。実際に編集したい行の前後に可変数のDB_UPを持つ複数のファイルでこれをどのように実行しますか?

xarg -iを試しましたが、sqlplusの前後にDB_UPも削除されました。

私は出力が次のようになります:

DB_UP
sqlplus test1.sql
DB_UP

ベストアンサー1

sed substituteコマンドは、1行のs/DB_UP//最初の行をDB_UP何もないものに置き換えます(つまり削除)。

これで:で始まる行に対してのみこれを実行したいので、sqlplusそれを^sqlplusコマンドのアドレス(条件)として使用してくださいs。行の先頭にパターンを/^sqlplus/s/DB_UP//固定します。^

sedバージョンがインタラクティブにファイルを変更するオプションをサポートしていることを確認してから、変更したい-iファイルを繰り返してスクリプトを適用できます。

sed -i '/^sqlplus/s/DB_UP//' file1 file2 file3

一部のsedバージョンでは、これを行う必要があります-i。問題が発生するかどうかを心配している場合は、これは良い考えかもしれませんが、すべてが正常に機能していることを確認したら、バックアップファイルを削除することをお勧めします。

おすすめ記事