특정 텍스트가 포함된 파일 이름과 줄 번호를 출력하는 스크립트 작성

특정 텍스트가 포함된 파일 이름과 줄 번호를 출력하는 스크립트 작성

폴더의 모든 .tex 파일에서 가 발생하는지 검색 \todo하고 해당 파일 이름과 줄 번호를 출력하는 (bash) 스크립트를 어떻게 작성할 수 있습니까?

내가 지금까지 얻은 것 :

#!/bin/bash
for texfile in *.tex ; do
  **Scan for \todo**
  **output $textfile$ , linenumber**
done

\todo{sometext} 내 .tex 파일을 전달할 때 해당 파일에 포함되지 않았는지 확인하고 싶습니다 .

bash일 필요는 없으며 단순함을 위해 bash를 선택했습니다. Grep 등은 확실히 환영받을 것입니다.

답변1

grep이 작업은 자체적으로 수행할 수 있으며 필요한 경우 스크립트로 래핑할 수 있습니다.

grep -nr '\todo' *.tex

-r재귀적으로 -n파일의 줄 번호를 표시하려면

기본적으로 grep은 일치 항목이 포함된 행을 표시합니다. 일부 형식의 경우 이는 많은 출력을 의미할 수 있습니다. 일치하는 항목과 양쪽에 몇 개의 문자만 얻을 수 있도록 출력을 제한하려면 다음을 사용하십시오.

egrep -nor '.{0,20}\\todo.{0,20}'  *.tex

"일치하는 결과만 표시"를 의미 -o하지만 그러면 \todo. 맥락을 파악하기 위해 일치 항목 양쪽에 최대 20자까지 문자를 허용합니다. 는 .무엇이든 일치하며 {0,20}이 일치를 최대 20자까지 반복합니다.

관련 정보