특정 위치에 텍스트를 삽입해야 하는데 파일이 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
새로 편집된 파일은 어디에 있습니까?