我只想在对象主机行(linux.google.com)中重复特定的单词,然后在该对象主机行下方添加新行。 显示名称=“ A:Linux.google.com”
object Host "linux.google.com" {
import "windows"
address = "linux.google.com"
groups = ["linux"]
}
object Host "kali.google.com" {
import "linux"
address = "linux.google.com"
groups = [linux ]
}
object Host "windows.google.com" {
import "linux"
address = "linux.google.com"
groups = ["windows" ]
}
object Host "os.google.com" {
import "windows"
address = "linux.google.com"
groups = ["linux"]
}
我正在搜索linux.google.com
如果在“对象主机”行中找到了字符串,那么我要输入新行(显示名称“ A:Linux.google.com”)(显示名称“ B:os.google.com”),如下所述。 / p>
object Host "linux.google.com" {
Display name "A: Linux.google.com"
import "windows"
address = "linux.google.com"
groups = ["linux"]
}
object Host "os.google.com" {
Display name "B: os.google.com"
import "windows"
address = "linux.google.com"
groups = ["linux"]
}
但是只能在对象宿主行中搜索字符串,而不能在任何其他行中搜索
答案 0 :(得分:2)
您可以使用sed
中的一行来完成此操作:
> sed -i '/object Host "linux.google.com"/a Display name "A: Linux.google.com"' input.txt
工作原理:
答案 1 :(得分:0)
我不知道如何用sed做到这一点。但是,我们可以执行以下操作。
假设input
为文件名,output
为输出文件。
while IFS= read -r var; do
echo "$var";
if [[ $var == *"Host \"linux.google.com\""* ]]; then
echo "Display name \"A: Linux.google.com\"";
fi;
done < input > output
代码非常简单。它每行读取您的文件行,并验证该行是否包含您要匹配的关键字。如果为true,则会在下面的行中打印您想要的内容。