AsciiDoc 파일의 모든 텍스트 주석을 정리합니다. AsciiDoc은 Markdown과 유사한 파일 형식이지만 다음과 같이 첫 번째 수준 제목을 나타내는 데 #
사용합니다 .=
첫 번째 파일.adoc
= How To Install MySQL 8.0 on Fedora
두 번째 파일.adoc
= Summaries and Notes From Books I've Read
각 파일에 하나의 "단 하나의" 첫 번째 수준 헤더가 포함되어 있고 = This is a First-Level Heading
항상 1번째 줄에 있다는 것을 알고 있는 경우, 내 목표는 grep
이러한 첫 번째 수준 헤더만 사용하여 모든 파일을 검색하는 것입니다.
이 grep 명령은 두 번째 파일과 일치합니다.
grep -in '^= .*ooks' *.adoc
이것은 의미가 있고 나에게 필요한 것입니다. 그러나 내 터미널은 "books"라는 단어 앞의 모든 항목을 빨간색으로 강조 표시하고 "I have read"의 나머지 부분은 흰색으로 남겨둡니다. 이게 정상인가요?
= 책에 대한 요약 및 메모나는 읽었다
답변1
grep 솔루션
찾다
grep '^=.*rst.*$' *.adoc
어디
^
줄의 시작=
동일한.*
뭐든지 몇 번이라도rst
첫 번째 문자열.*
뭐든지 몇 번이라도$
줄 끝
발견된 파일과 줄이 나열됩니다.
first.adoc:= The title of the first file
결과 인쇄
grep은 일치를 트리거한 행의 부분을 강조 표시하므로
grep '^=.*rst' *.adoc
강조될 것이다
첫 번째.adoc:= 첫 번째 제목문서
줄 끝까지 검색하라는 요청이 없기 때문입니다.
grep '^=.*rst.*$' *.adoc
강조될 것이다
첫 번째.adoc:= 첫 번째 파일의 제목
요청이 줄 끝까지 검색되기 때문입니다.
파일만 사용 -l
(또는 --file-with-matches
)
grep -l '^=.*rst' *.adoc
파일 이름을 나열하지 않고 행만 나열하려면 -h
(또는 --no-filename
)을 사용하십시오.
바라보다man grep
답변2
awk
지원되는 GNU 버전 에 액세스할 수 있는 경우 nextfile
해야 할 일은 다음과 같습니다.
awk '{ if ( $0 ~ /fifth/ ) print FILENAME ; nextfile }' *.adoc
답변3
귀하의 질문을 올바르게 이해했다면 전체 제목이 강조표시되기를 원하실 것입니다.
이 경우 표현식 끝에 .*를 추가하면 됩니다. grep은 일치 표현식과 일치하는 행의 과거 부분을 빨간색으로 표시합니다.