簡體   English   中英

從文本文件中批量提取IP地址

[英]Extracting IP addresses from text file with batch

我有一個文本文件,其數據如下:

8月21日[10.23.5.5]拆解動態

8月18日[10.150.1.45] 8月21日15:28:34 otoldc

2012年8月24日[10.96.5.10] 2012年8月21日18:58:26

2012年8月24日[10.96.5.10] 2012年8月22日18:58:26

8月21日[192.168.15.231] sendmail [18831]

我需要刪除除以[[和]]包圍的IP地址以外的所有內容。 “ [”之前的字符串長度是固定的。 “]”之后的字符串長度有所不同。 我在這里嘗試使用現有解決方案之一,但沒有成功。 可以使用批處理嗎? 謝謝:-)

直接從命令行: for /f "tokens=2 delims=[]" %F in (file.txt) do echo %F 根據需要重定向。 不如sed / awk和regexes靈活,但是它不需要外部工具。

如果您打算將一些更復雜的東西放在一起,那么我真的會尋找功能更強大的工具-除了已經提到的awk或Win上Perl的自然選擇之外,Powershell也是不錯的選擇。

如果您的系統尚未安裝sed版本,請安裝它。

$ sed -r -e 's/^[^[]*\[([^]\]*)].*/\1/' file.txt
10.23.5.5
10.150.1.45
10.96.5.10
10.96.5.10
192.168.15.231

這sed的一個班輪“腳本”輸出除了一套就行了[]方括號里面的內容從線去除一切后,每個輸入行-它檢查這些內容,以確保它的IP地址相匹配。

您將其標記為批處理,因此我認為這是在Windows而非Linux上。 盡管如此,強烈建議您訪問Cygwin的網站並下載副本。 這將使您能夠訪問catgrep命令,這使此過程變得更加簡單。 一旦安裝了Cygwin ,就可以運行以下命令從日志文件中解析出IP地址。

cat your.log | grep -oE '([[:digit:]]{1,3}\\.){3}[[:digit:]]{1,3}' > ips.txt

干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM