首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想在行中grep一个特定的单词,并在文件中的该行下面添加一个新行

我想在行中grep一个特定的单词,并在文件中的该行下面添加一个新行
EN

Stack Overflow用户
提问于 2019-04-24 06:06:13
回答 2查看 36关注 0票数 0

我只希望grep对象宿主行( linux.google.com )中的特定单词,并在该对象宿主行下面添加新行。显示名称= "A: Linux.google.com“

代码语言:javascript
复制
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”),如下所述。

代码语言:javascript
复制
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"]
}

但仅在对象宿主行中搜索字符串,而不在任何其他行中搜索

EN

回答 2

Stack Overflow用户

发布于 2019-04-24 06:24:47

sed中,只需一行代码即可完成此操作

代码语言:javascript
复制
> sed -i '/object Host "linux.google.com"/a Display name "A: Linux.google.com"' input.txt

它的工作原理:

  • -i选项告诉sed就地修改文件(例如,您不必制作临时副本,然后用临时副本覆盖原始文件)
  • /object Host "linux.google.com"/ is a sed address。它告诉sed要对哪一行进行操作。在本例中,它是一个正则表达式。但是sed有多种形式的地址,包括行号、行号范围等。
  • 地址正则表达式后面的ased append命令。您放在a后面的任何内容都会附加到与地址匹配的行下面的行上。
票数 2
EN

Stack Overflow用户

发布于 2019-04-24 06:23:52

我不知道用sed怎么做。但是,我们可以执行以下操作。

input作为文件名,output作为输出文件。

代码语言:javascript
复制
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,则在下面的行中打印您想要的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55820044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档