たとえば、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
s
ubstituteコマンドは、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
。問題が発生するかどうかを心配している場合は、これは良い考えかもしれませんが、すべてが正常に機能していることを確認したら、バックアップファイルを削除することをお勧めします。