twi*_*xel 7 regex ip bash shell sed
一直试图让这个工作一段时间而不是真正得到它.基本上,我有一个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
Run Code Online (Sandbox Code Playgroud)
但它不匹配和替换.我不熟悉sed,我也是regexps的初学者.
任何帮助都是极好的!谢谢 :)
Pet*_*den 13
如果您的sed
支持版本扩展了正则表达式(-r
选项),您可以执行类似这样的操作(类似于您在grep
语句中的操作).另请注意$newip
,在单引号之外,允许shell替换它.
sed -r 's/(\b[0-9]{1,3}\.){3}[0-9]{1,3}\b'/"$newip"/
Run Code Online (Sandbox Code Playgroud)
顺便说一下,这个解决方案仍然匹配不代表IP地址的字符串.有关更复杂的解决方案,请参阅IP 地址下的此站点.