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

在Bash脚本中提取含指定IP模式的文件行

在Bash脚本中提取包含指定IP的行

嘿,我懂你遇到的问题了——想用sed提取文件里包含192.168.1.1的行,但试了好几次没成功对吧?问题出在IP里的.上,它在正则表达式里是匹配任意单个字符的通配符,不是字面意义的点,直接用sed的话匹配逻辑会跑偏。

给你两个靠谱的解决方案:

方案1:用sed正确转义IP里的点

先把变量里的点转义成正则能识别的字面点,再用sed过滤:

var='192.168.1.1'
# 转义变量中的每个点,让sed把它当成普通字符处理
escaped_var=$(echo "$var" | sed 's/\./\\./g')
# -n 让sed只输出匹配的行,/pattern/p 负责打印匹配到的内容
body=$(sed -n "/$escaped_var/p" your_file.txt)
# 查看最终提取结果
echo "$body"

方案2:用grep更省心(推荐)

如果允许用grep的话,直接用固定字符串匹配模式,不用折腾转义:

var='192.168.1.1'
# -F 选项会把模式当作纯字符串,不解析正则规则,点就是普通的点
body=$(grep -F "$var" your_file.txt)
echo "$body"

不管用哪种方法,最终都会得到你想要的两行内容:

this is line 1 192.168.1.1
this is line 4 192.168.1.1

内容的提问来源于stack exchange,提问作者Miguel.G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:27:46