일부 HTML과 일부 텍스트가 혼합된 파일이 있는데 텍스트 줄만 필요합니다.
나는 grep
HTML 태그로 시작하는 줄, 심지어 태그 앞에 공백이 포함된 줄을 제외하는 방법을 찾으려고 애쓰고 있습니다.
어떻게 든 이것은 나에게 효과적이지만 그렇게해서는 안된다고 생각합니다.
grep '^\<' file.htm
HTML이 없는 행만 표시합니다. 이유를 설명해 주실 수 있나요? 내 생각엔 이 일을 할 수 있는 곳 grep -v
이 필요한 것 같아 .*
.
답변1
~에서GNU grep
매뉴얼:
\<
단어 시작 부분의 빈 문자열과 일치합니다.
\>
단어 끝의 빈 문자열과 일치합니다.
이것은 또한 관련이 있습니다 [강조 광산]:
-w
--word-regexp
전체 단어를 구성하는 항목이 포함된 행만 선택하십시오. 테스트에서는 일치하는 하위 문자열이 줄의 시작 부분에 있거나 단어를 만들지 않는 문자가 앞에 있어야 한다는 것입니다. 다시 말하지만, 줄 끝에 있어야 하거나 단어를 형성하지 않는 문자가 뒤에 와야 합니다.단어를 구성하는 문자는 문자, 숫자, 밑줄입니다.[…]이 옵션은 단어 구성 요소로 시작하고 끝나지 않는 하위 문자열과 일치할 수 있으므로 및 주변 정규식과
-w
다릅니다 . 예를 들어, 포함된 줄만 일치 하더라도 단어 구성 요소가 아니기 때문에 어떤 줄 과 도 일치할 수 없습니다 . […]\<
\>
grep -w @
@
grep '\<@\>'
@
완전성을 위해:
캐럿
^
및 달러 기호는$
각각 줄의 시작과 끝에서 빈 문자열과 일치하는 메타 문자입니다. 일치 항목을 각각 줄의 시작이나 끝 부분에 "고정"시키므로 앵커 포인트라고 합니다.
사용하는 패턴( ^\<
)은 단어를 구성하는 문자 앞의 줄 시작과 일치합니다. 문자나 공백은 <
단어의 일부가 아닙니다.
줄 시작 부분의 공백은 일치를 트리거하지 않습니다.에도 불구하고뒷면에 라벨이나 무언가가 있는 경우. 텍스트 줄에 유효한 특정 문자(예 (
: )도 일치를 트리거하지 않습니다.