簡體   English   中英

Grep 第一個字符串匹配正則表達式

[英]Grep first string matching regex

我想獲得與我的正則表達式匹配的第一個字符串。 例如我有字符串

來自未知 [211.147.3.74] 的 RCPT:450 4.7.1 客戶端主機被拒絕:找不到您的主機名,[211.147.3.74];

我的腳本如下所示:

IP=`echo $LINE | grep -E -o --max-count=1 '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'`

echo $IP

結果我得到

211.147.3.74 211.147.3.74

但我只想獲得一次 IP。 我試過 'grep --max-count=1' 但仍然有兩個 ip。

LINE='RCPT from unknown[211.147.3.74]: 450 4.7.1 Client host rejected: cannot find your hostname, [211.147.3.74];'
ipn='(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'
IP=`echo $LINE | grep -E -o "$ipn\.$ipn\.$ipn\.$ipn" | head -1`
echo "$IP"

從這里

echo "$LINE"  | perl -MRegexp::Common=net -ne '/($RE{net}{IPv4})/ and print "$1\n"'

暫無
暫無

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

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