수천 개의 파일을 찾아보고 찾아야 합니다.
# disabledRule:
이 줄에서는 and fileinto
다음 fileinto_copy
에 오는 일련의 키워드를 찾아야 합니다 . 예:create
target
{s:4:"type";s:8:"fileinto";s:6:"create";b:0;s:6:"target";s:5:"PATTERN";}
{s:4:"type";s:13:"fileinto_copy";s:6:"create";b:0;s:6:"target";s:5:"PATTERN";}
이 키워드 뒤에는 PATTERN을 수정 .
하고 /
.
PATTERN에는 거의 모든 문자가 포함될 수 있습니다. 예를 들어
simple.folder.structure
more.complex.[department_1] @employee-XY
섹션은 키워드마다 약간 다를 수 있으며 전체 "키워드+패턴" 패턴이 한 줄에 여러 번 나타날 수 있습니다.
이것은 쉬운 것 같지만 큰 스크립트를 작성하고 줄을 분리하지 않고 sed
는 작동하게 하는 방법을 찾을 수 없었습니다 . awk
나는 sed
물건을 교체하고 패턴을 찾는 데 꽤 능숙하다고 생각하지만 교체를 패턴에만 제한하는 방법을 모르겠습니다.
더 긴 스크립트를 작성하지 않고도 이 작업을 수행할 수 있는 방법에 대한 제안 사항이 있습니까? sed
캡처 그룹을 처리할 수 있는 방법이 있나요 ?
업데이트: 여러분 중 일부가 발견했을 수도 있듯이 마이그레이션으로 인해 파일을 수정해야 합니다. 우리는 새 소프트웨어가 완전히 호환되지 않는다는 것을 알고 있지만 새 소프트웨어는 위의 "#disabledRule" 줄을 전혀 인식하지 못하는 것으로 나타났습니다. 따라서 이러한 관점에서는 문제를 해결할 수 없습니다.
답변1
예, 다양한 주소를 사용할 수 있지만 특정 섹션이 언제 끝나는지 sed
알 수는 없습니다 . # disabledRule:
예를 들어, 다음 빈 줄에서 끝나고 주어진 줄에 선 패턴 외부에 다른 점이 없으면 filecopy
매우 간단합니다.
sed '/^# disabledRule:$/,/^$/s_\._/_g'
하지만 이 경우에는 아마도 묻지 않을 것입니다. 키워드에 대한 추가 필터링이 수행됩니다.
sed '/^# disabledRule:$/,/^$/{/"fileinto\(_copy\)*".*"create".*"target"/s_\._/_g;}'
그래도 요구 사항이 충족되지 않으면 더 수정하거나 최대한 긴 파일 예제를 제공하여 더 자세히 설명하십시오.