정규식을 사용하여 쉘 스크립트에서 캡처 그룹 내용을 바꾸는 방법

정규식을 사용하여 쉘 스크립트에서 캡처 그룹 내용을 바꾸는 방법

여러 디렉터리에 파일을 입력하고 기존 색인 이름을 index=windows_pr 및 index=windows_np로 변경하려고 합니다.

표시된 WinEventLog 블록은 모두 input.conf라는 동일한 파일에 있지만 A.(EVZ_pr_windows/inputs.conf) 및 B(DEG_np_windows/inputs.conf)와 같이 다른 이름을 가진 폴더에 있습니다. 따라서 _pr로 끝나는 색인이 있는 모든 파일 섹션은 폴더 A inputs.conf에 있고, _np로 끝나는 색인이 있는 모든 파일 섹션은 폴더 B input.conf에 있습니다. 스크립트는 _pr로 끝나는 인덱스를 index = windows_pr로 변경하고 _np로 끝나는 인덱스를 index = windows_np로 변경해야 합니다.

input.conf의 WinEventLog 블록은 응용 프로그램, 보안, 시스템, ForwardedEvents 및 설정으로 제한됩니다.

이것을 시도했지만 오류가 발생합니다

아래는 오류입니다

\]_,/s/.*index.*=.*pr$/index = window_pr/' inputs.conf

sed: -e 표현식 #1, 문자 69: 종료되지 않은 주소 정규식

#!/bin/bash

sed -E -i '\_\[WinEventLog://(Application|Security|System|ForwardedEvents|Setup)
\]_,/s/.*index.*=.*np$/index = window_np/' inputs.conf

sed -E -i '\_\[WinEventLog://(Application|Security|System|ForwardedEvents|Setup)
\]_,/s/.*index.*=.*pr$/index = window_pr/' inputs.conf


[WinEventLog://Application]
checkpointInterval = 5
current_only = 0
disabled =0
start_from = oldest
index = CNDO_pr

[WinEventLog://Security]
checkpointInterval = 5
current_only = 0
disabled =0
start_from = oldest
index = CGWS_pr

[WinEventLog://System]
checkpointInterval = 5
current_only = 0
disabled =0
start_from = oldest
index = DMRW_pr

[WinEventLog://ForwardedEvents]
checkpointInterval = 5
current_only = 0
disabled =0
start_from = oldest
index = NENP_pr

[WinEventLog://Setup]
checkpointInterval = 5
current_only = 0
disabled =0
start_from = oldest
index = EOFK_pr

[WinEventLog://Application]
checkpointInterval = 5
current_only = 0
disabled =0
start_from = oldest
index = FDWD_np

[WinEventLog://Security]
checkpointInterval = 5
current_only = 0
disabled =0
start_from = oldest
index = ASKD_np

[WinEventLog://System]
checkpointInterval = 5
current_only = 0
disabled =0
start_from = oldest
index = JMSF_np

[WinEventLog://ForwardedEvents]
checkpointInterval = 5
current_only = 0
disabled =0
start_from = oldest
index = JCCD_np

[WinEventLog://Setup]
checkpointInterval = 5
current_only = 0
disabled =0
start_from = oldest
index = HSMS_np

답변1

오류 메시지를 고려하고 표현식 #1이 시작한다고 가정하면 \\_표현식의 문자 69가 _뒤에 오는 것으로 보입니다 ]. 따라서 표현식에 적절한 종결자를 제공 \하려면 접두사 가 필요하다고 생각합니다 ._

관련 정보