我正在尝试创建一个小脚本,它基本上使用 dig +short
来查找网站的 IP,然后将其通过管道传输到 sed/awk/grep 来替换一行。当前文件如下所示:
#Server
123.455.1.456
246.523.56.235
所以,基本上,我想在文本文件中搜索“#Server”行,然后将其下面的两行替换为从 dig 获取的 IP 地址。
我理解 sed 的一些语法,但我真的很难弄清楚如何替换匹配项下的两行。非常感谢任何帮助。
最佳答案
根据 OP,并不是 100% 清楚需要在哪里替换什么,但这里有一个针对一般情况的简单说明,使用 GNU sed 和 bash。将“3”后面的两行替换为标准输入:
echo Hoot Gibson | sed -e '/3/{r /dev/stdin' -e ';p;N;N;d;}' <(seq 7)
输出:
1
2
3
Hoot Gibson
6
7
注意:sed 的 r 命令的记录是不透明的(无论如何在 Linux 中)。有关r的更多信息,请参阅:
“5.9。'r' 命令未将文件插入到文本中”在此 sed FAQ 中.
关于linux - 使用 sed 或 awk 替换匹配后的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37473994/