You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用grep提取第一个八位组为1位数字的IP地址?

提取首段为单个数字的IP地址

要精准提取文件中第一个八位组仅含1位数字的完整IP,用下面的grep命令:

grep -E '^[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]?)$' file.txt

命令说明:

  • ^[0-9]\.:锚定行首,匹配单个数字(0-9)后跟英文句点(转义\.避免匹配任意字符),确保第一个八位组只有1位数字。
  • (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):匹配合法的IP八位组(0-255),覆盖所有有效数值范围。
  • $:锚定行尾,确保匹配完整一行的IP,不会误匹配包含IP的长文本。

如果IP并非单独占一行,而是夹杂在其他文本里,可把^和$换成词边界\b:

grep -oE '\b[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]?)\b' file.txt

之前命令失效原因:

  • 第一个命令:[^^][0-9].[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} 里的.是匹配任意字符而非IP句点,且未限制首段数字后不能跟其他数字,会误匹配多位数开头的IP;[^^]匹配行首以外的任意字符,逻辑存在漏洞。
  • 第二个命令:grep -o -n '\b[0-9].' 仅提取了首段单个数字加后续一个字符,并非完整IP,无法满足需求。

内容的提问来源于stack exchange,提问作者ChosenLattice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:50:34