4

私はsedスクリプトにまったく慣れていません。私はファイルにテキストを追加する方法を研究していて、ファイルの正しい行に追加したいテキストを取得することができましたが、正しい位置にテキストを追加する方法を見つけることができません!

したがって、テキストファイルにある行は次のようになります

  listen_addresses = 'localhost, 192.0.0.0' # what IP address(es) to listen on;

次のような行になるようにIPを追加したいと思います。

   listen_addresses = 'localhost, 192.0.0.0, 192.0.0.0'  # what IP address(es) to listen on;

試行錯誤を通して、私には次のものしかありません。

   sed -i '/listen_addresses/ s/.*/&,192.0.0.0/' testfile

これは次のようになります。

  listen_addresses = 'localhost, 192.0.0.0' # what IP address(es) to listen on; 192.168.0.0

正しい位置に追加するにはどうすればよいですか?

4

2 に答える 2

7

多くの方法があります。それらの1つは、最後を検索し、'括弧を使用して一致したデータを保存することです。正規表現内でそれらの1つと一致させたいので、一重引用符を二重引用符に変更しました。

sed -i "/listen_addresses/ s/^\(.*\)\('\)/\1, 192.0.0.0\2/" testfile
  • ^\(.*\):行頭から行末まで一致します(欲張り)。
  • \('\):最後から。までバックトラックし'ます。したがって、文字列の最後のものと一致します。
  • \1:括弧の最初のペアの間に保存されたコンテンツ。
  • , 192.0.0.0:リテラル文字列。
  • \2:2番目の括弧の間に保存されたコンテンツ。
于 2012-10-03T10:13:13.587 に答える
2

' #行の一部を置き換えるだけです。

sed -i "/listen_addresses/ s/' #/, 192.0.0.0' #/" testfile

一重引用符を簡単に挿入できるように、二重引用符を使用したことに注意してください。

于 2012-10-03T10:13:34.353 に答える