sed는 #DRECONTENT를 대체하지 않습니다.

sed는 #DRECONTENT를 대체하지 않습니다.

안녕하세요. 여기에 제가 파일에서 바꾸려고 하는 내용의 일부가 있습니다.

#DRECONTENT
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 CA0B0334 /9zFhSLWksoWG8ZgYQDup4jkWkSeGO/MFz5kyMk3JcXqXHHeAjVyr049/QJWE5prYcIK01x6z83C4M2GC7h/PN2k7ZwtkkpOLG3N3/RdBFHOsluLwIoS2HV1pqHL5pZ+wER/NQ==
Skip to main content (Press Enter).

다음과 함께

#DRECONTENT
Skip

이를 위해 다음 명령을 사용합니다.

sed -e 's/#DRECONTENT\n.*\nSkip/#DRECONTENT/g' post.idx

그러나 그것은 그것을 대체하지 않습니다. 어떤 아이디어가 있나요?

답변1

sed유틸리티는 행을 읽습니다. 이는 개행 문자가 행을 구분하는 데 사용되어 제거되기 때문에 입력에서 개행 문자를 일치시킬 수 없음을 의미합니다.

그러나 다음과 같이 할 수 있습니다.

sed '/^#DRECONTENT$/ { N;N; s/\(\n\).*/\1Skip/; }' file

이는 입력의 모든 라인을 있는 그대로 출력하지만, #DRECONTENT정확한 라인이 발견되면 다음 두 라인이 입력 버퍼에 추가됩니다.개행 문자를 구분 기호로 사용(이것은 모두가 N하는 일입니다.) 그런 다음 처음 삽입된 개행 문자 뒤의 모든 내용을 단어로 바꿉니다 Skip.

결과는 #DRECONTENT그 뒤의 첫 번째 줄을 삭제하고 다음 줄을 단어로 바꾸는 것입니다 Skip. 다른 모든 줄은 변경되지 않습니다.

표준은 sed명령의 교체 부분에 개행 문자를 사용하여 삽입할 수 없습니다. 일치하는 개행 문자를 캡처한 다음 역참조를 사용하여 다시 삽입하여 이 문제를 해결했습니다.\ns

관련 정보