[英]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.