我已经尝试让它工作了一段时间,但并没有真正做到。 基本上,我有一个 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 site在 IP 地址 下获取更复杂的解决方案。
关于regex - 使用 sed 搜索和替换文件中的 ip 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5277156/