GNU/Linux >> Linux の 問題 >  >> Linux

一致するテキストを見つけて次の行を置き換える

片道:サンプルファイル

$ cat file
Cygwin
Unix
Linux
Solaris
AIX

sed を使用して、パターン「Unix」の後の次の行を「hi」に置き換えます:

$ sed '/Unix/{n;s/.*/hi/}' file
Cygwin
Unix
hi
Solaris
AIX

特定の質問について:

$ sed '/<key>ConnectionString<\/key>/{n;s/<string>.*<\/string>/<string>NEW STRING<\/string>/}' your_file
<key>ConnectionString</key>
<string>NEW STRING</string>

これはうまくいくかもしれません (GNU sed):

sed '/<key>ConnectionString<\/key>/!b;n;c<string>changed_value</string>' file

!b 前のアドレス (regexp) を否定し、すべての処理を中断して、sed コマンドを終了します n 現在の行を出力し、次の行をパターン空間に読み込みます c 現在の行をコマンドに続く文字列に変更します。


できます。あなたが書いたら、

sed '/<key>ConnectionString<\/key>/!b;n;n;c<string>changed_value</string>' file

2 つの n に注意してください。2 行の後に置き換わります。


Linux
  1. Mac および Linux でのテキスト ファイルでの再帰的な検索と置換

  2. シェルスクリプトでの検索と置換

  3. sedを使用して、ファイル内の行の範囲内のテキストを検索して置換します

  1. Linuxでsedを使用してテキストファイルを検索および置換する

  2. LinuxでSed、ex、perlコマンドを使用してテキストを検索および置換する

  3. ファイル内の文字列を置き換える方法は?

  1. Vi と Vim エディター:12 の強力な検索と置換の例

  2. sed のようなテキストを python に置き換えるにはどうすればよいですか?

  3. grep と sed を使用して文字列を検索して置換する