2011-12-21 6 views
1

私は一致させたいIPアドレス、例えば192.168.1.1を持っています。Grep固有のIPアドレス

は私がafilegrep "192.168.1.1" afile 1行目と2行目の両方が、私が欲しいものではありませんこれは、一致しているならば、この

item1, item2, 192.168.1.1 
item3, item4, 192.168.1.10 
item5, item6, 192.168.2.1 

のように見えますafileと呼ばれるファイルを持っています。

私はどのIPアドレスにも一致する正規表現をたくさん知っていますが、特定のIPアドレスに一致する正規表現は認識していません。

これに関するお手伝いがあります。

IPアドレスが回線の最後にない場合はどうなりますか?たとえば、2番目と3番目の列が私のサンプルファイルでスワップされた場合はどうなりますか?

答えて

5

あなたはそれが行の末尾に一致させるために、正規表現の末尾に$を追加する必要があります。正規表現の.は「任意の文字に一致」を意味するため、ドットをエスケープすることもお勧めします。だからあなたの正規表現はなる:

grep "192\.168\.1\.1$" afile 
+0

あなたが最初に回答したようです。 – devin

1

最後の行の後に行末をマッチさせたいとします。これを試してみてください:

grep "192.168.1.1$" 
1

grep「再」は正規表現であるg/re/pの簡略版です。 RegExでは、期間は「任意の文字」を意味します。リテラル期間にするには、バックスラッシュでエスケープします。

grep "192\.168\.1\.1$" afile 

他にも述べたように、行を終了する必要があります。

+0

式が引用符で囲まれているので、ピリオドをエスケープする必要はありません。 '' 192.168.1.1 "は' 192 \ .168 \ .1 \ .1'と同様に動作します。 – devin

+1

@devin、確かに確認しました。あなたがそれらをエスケープしないと、あなたのパターンは* "item1、item2、** 192T168Q1] 1 **" *、引用符と一致します。 – FakeRainBrigand