sam 편집기에서 다음 명령을 사용하면 문자열 "ed"를 검색하고 인쇄할 수 있지만 "red"는 검색할 수 없습니다.
,x./*\n/ g/ed v/red p
편집에서도 비슷한 일을 할 수 있는 방법을 찾으려고 노력 중입니다. 문자열 "ed"를 검색하고 싶지만 다음 내용이 포함된 행은 가져오지 않으려고 합니다.
아르 자형편집하다,좋다편집하다, 짐편집하다, 등.
v 명령에 익숙하지만 ag 명령과 함께 사용하는 방법이나 ed에서 사용할 수 있는지 잘 모르겠습니다.
답변1
이는 단어 경계 표시가 포함된 정규식을 사용하는 것이 가장 좋습니다.
g/\<ed\>/p
나는 그것에 대해 완전히 익숙하지 않기 sam
때문에 귀하가 보여준 편집 표현식에 대해 논평할 수 없습니다. 위의 표현식은철사포함하다단어 ed
ed
, 즉 앞뒤에 a가 없는 문자열입니다.단어 문자. 단어 문자는 집합의 문자입니다 [[:alnum:]_]
. 너비가 0 \<
인 어설션 이며 \>
단어 문자와 단어가 아닌 문자 사이의 경계에서 일치합니다.
\<
비표준이지만 GNU \>
시스템 및 일부 BSD 시스템에서 사용할 수 있습니다. macOS는 [[:<:]]
and를 대신 사용하지만 , GNU 시스템은 단어의 시작과 끝에서 and를 사용하여 일치시킬 [[:>:]]
수도 있습니다 .\b
이식 가능한 방식으로 이 작업을 수행하려면 일치해야 하지만 단어가 줄의 시작이나 끝 부분에 나타나거나 한 줄에 문자가 두 개만 있는 [^[:alnum:]_]ed[^[:alnum:]_]
특수한 경우도 고려해야 합니다 .ed
답변2
Kusalananda의 답변의 확장으로 Ex는 POSIX 편집자이기도 합니다.\< \>
POSIX에서는 단어 앵커를 지원해야 합니다.. 그래서 그냥 사용하는 것이 좋습니다
g/\<ed\>/p
하지만 전에.