我需要在特定位置插入文本,但该行可以在任何地方,因为文件很大,有 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
新的编辑文件在哪里。