如何從文字檔中提取 IP 號碼?

如何從文字檔中提取 IP 號碼?

如何從格式如下的文件中僅提取 IP 號碼?

test-Zookeeper2-Z1-solr1006 10.15.5.226
10.15.6.103 test-Zookeeper2-Z2-solr1006
10.15.5.92 test-Zookeeper3-Z1-solr1006
10.15.6.217 test-Zookeeper1-Z2-solr1006
10.15.6.83 test-Zookeeper3-Z2-solr1006
test-Zookeeper-Z1-solr1006 10.15.7.106

答案1

Perl 有一個經過驗證的常見正規表示式模組,包括 IPv4 位址:

$ perl -MRegexp::Common=net -lane 'print for grep {/^$RE{net}{IPv4}$/} @F' file
10.15.5.226
10.15.6.103
10.15.5.92
10.15.6.217
10.15.6.83
10.15.7.106

答案2

對於樣本資料:

grep -o '\b[0-9.]\+\b'

或者

grep -o '[0-9.]\{7,\}'

答案3

假設您的範例輸入位於名為的檔案中test.in

sed 's/.*\([1-9][0-9]*\.[1-9][0-9]*\.[1-9][0-9]*\.[1-9][0-9]*\).*$/\1/' test.in

您可能會花費大量時間讓一切“恰到好處”,例如刪除重複項等,但這只是讓您開始。

答案4

一個awk辦法:

$ awk '{for(i=1;i<=NF;i++){if($i~/^[0-9.]{7,15}$/){print $i}}}' file
10.15.5.226
10.15.6.103
10.15.5.92
10.15.6.217
10.15.6.83
10.15.7.106

還有另一種perl方式:

$ perl -lne '/\b[0-9.]{7,15}\b/ && print $&' file
10.15.5.226
10.15.6.103
10.15.5.92
10.15.6.217
10.15.6.83
10.15.7.106

相關內容