フルワード(IPアドレス)を一致させるには、「sed」を使用します。

フルワード(IPアドレス)を一致させるには、「sed」を使用します。

ファイルには次のような線スタイルがあります。

1.2.3.4
1.2.3.4a
1.2.3.45
iaa1.2.3.4ad
11.2.3.4a
a1.2.3.4
1.2.3.4>
<1.2.3.4>
<"1.2.3.4">
1.2.3.4 hostname

すべてのIPを交換したい」1.2.3.4「たとえば、別のIPを使用してください」9.8.7.6'、<>と""で囲まれ、ipの前後に文字が続きます。

しかし、いいえこれ11.2.3.4「または」1.2.3.45'

だから数値 1.2.4.6.7.8.9.10 はすべて一致します。

注:「1.2.3.4」は単なる例であり、有効なIPであれば何でも可能です。

別のIPと交換したいですsed1.2.3.4

コマンドを作成する方法がわかりませんsed

sed "s/oldip/newip/g"

私は正規表現について少し知っていますが、これは私にとってとても難しいようです。

ありがとうございます。

ベストアンサー1

有効なIPが含まれていない行について何をしたいのかを話していないので、単に無視したいとします。それからやるべきことは、行全体が1〜3個の数字で構成される3つのセット([0-9]{1,3})と一致することを確認し、次に1〜3個の数字で構成される最後のセットと一致することを確認することです。次の3つの方法があります。

  • GNU sed

    sed -r 's/^([0-9]{1,3}\.){3}[0-9]{1,3}$/5.6.7.8/' file
    
  • 非GNU sed

    sed  's/^\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}$/5.6.7.8/' file
    
  • パール

    perl -pe 's/^(\d{1,3}\.){3}\d{1,3}$/5.6.7.8/' file
    

おすすめ記事