使用 grep 或 vim 在特定位置插入文本

使用 grep 或 vim 在特定位置插入文本

我需要在特定位置插入文本,但该行可以在任何地方,因为文件很大,有 1000 到 2000 行,并且信息添加在中间或任何地方。

下面是示例的简短版本:

 1 define service{
 2         service_description             version-check-aix
 3         use                             passive-service
 4         max_check_attempts              1
 5         initial_state                   o
 6         notifications_enabled           0
 7         host_name                       hosts1,host2
 8 }
 9
10 define service{
11         service_description             version-check-unix
12         use                             passive-service
13         max_check_attempts              1
14         notifications_enabled           0
15         host_name                       hosts1,host2
16 }
17 define service{
18         service_description             version-check-linux
19         use                             passive-service
20         initial_state                   o
21         notifications_enabled           0
22         host_name                       hosts1,host2 

我需要在包含host_name<tab><something here>,host3.在我的示例中,该行位于第 15 行。(行号用于说明,数据文件中不存在。)

我可以grep -in version-check-unix插入“host3”吗?如何?

答案1

您希望将某些内容附加到符合某些条件的行。这可以通过sed等来完成。

让我们假设匹配标准是: 该行包含字符串“host_name”,然后(在一些空格和/或制表符之后)“hosts1,host2”;您希望添加“,host3”。那么这会起作用:

cat file | sed 's/\(^[\t ]\+host_name[\t ]\+hosts1,host2$\)/\1,host3/g' > newfile

file原始文件和newfile新的编辑文件在哪里。

相关内容