如何解决Grep第一个与正则表达式匹配的字符串
| 我想获取与我的正则表达式匹配的第一个字符串。 例如我有字符串 RCPT from unknown [211.147.3.74]: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\"\'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。