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" 문자열이 포함되어 있고 (일부 공백 및/또는 탭 뒤에) ",host3"을 추가하려는 "hosts1,host2"가 포함되어 있습니다. 그러면 이것이 작동합니다:

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

file원본 파일과 newfile새로 편집된 파일은 어디에 있습니까?

관련 정보