regex - 使用 sed 搜索和替换文件中的 ip 地址

标签 regex bash shell sed ip

我已经尝试让它工作了一段时间,但并没有真正做到。 基本上,我有一个 IP 地址每天或多或少变化的文件。该文件仅包含一个 IP 地址,而这是我试图用我疯狂的 grepping 来查找我当前的内部 IP 来替换的那个。

我有这个

#!/bin/sh

newip=$(ifconfig | grep 0xfff | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | grep -v 255)

echo $newip
sed 's/*\.*\.*\.*/"$newip"/g' log.txt > logmod.txt

但它不是匹配和替换。 我不熟悉 sed,我也是正则表达式的初学者。

任何帮助都会很棒! 谢谢:)

最佳答案

如果您的 sed 版本支持扩展的正则表达式(-r 选项),您可以这样做(类似于您在 grep 语句)。另请注意 $newip 位于单引号之外,以允许 shell 替换它。

sed -r 's/(\b[0-9]{1,3}\.){3}[0-9]{1,3}\b'/"$newip"/

顺便说一句,这个解决方案仍然匹配不代表 IP 地址的字符串。参见 this siteIP 地址 下获取更复杂的解决方案。

关于regex - 使用 sed 搜索和替换文件中的 ip 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5277156/

相关文章:

linux - 通过另一个文件的创建时间查找文件

linux - Shell脚本时间控制

linux - 如何从一个文件中查找另一个文件中的单词?

regex - 为什么我无法在正则表达式中将某些字符串与 ( | ) 匹配

linux - 在 shell 脚本中打开新终端

javascript - 在字符串对象中查找匹配模式

regex - Notepad++ 用增量值查找/替换数字

regex - 使用 REGEX Google Data Studio 替换完整的引荐来源网址

java - 是否有任何有效的 Java 解决方案/算法可以根据带分隔符的键字符串在文本字段中查找值?

java - Android studio - 如何直接使用java方法的终端?