ファイルのある文字列を別の文字列に置き換える

ファイルのある文字列を別の文字列に置き換える

次の構成ファイルがたくさんあります。

reader_0 = newcamd({
name = "Oct 1",
host = "hostname 1",
port = 27020,
user = "UNAME",
pass = "password1",
key  = "0102030405060708091011121314",
})

reader_1 = newcamd({
name = "Oct 2",
host = "hostname 2",
port = 27020,
user = "UNAME",
pass = "password2",
key  = "0102030405060708091011121314",
})

ポート番号27020を「reader_1」セクションの他のポート番号(22443など)に置き換える方法sed

ありがとうございます。

ベストアンサー1

sedの全身であるedを使用してください。

ed -s input <<< $'/^reader_1 =\n/^port =\nc\nport = 22443,\n.\nw\nq'

edこれにより、ファイルを編集するためにANSI引用符付きコマンド文字列が送信されます。コマンドは次のとおりです。

  1. /^reader_1 =- "reader_1 ="で始まる行を検索する
  2. /^port =- そこから「port =」で始まる行を前方に検索します。
  3. c- この行を変更してください
  4. port = 22443,- 本文に移動
  5. .- 代替テキストの終わり
  6. w--ディスクにファイルを書き込む
  7. q- 辞職するed

実際のデータに基づいて、ある程度慎重に一致するように正規表現を強化または緩めることができます。

おすすめ記事