특정 문자열이 포함된 파일의 파일 이름 목록을 가져오기 위해 스크립트에서 grep을 사용하고 있습니다. 기본 명령은 do 루프의 다음 명령입니다.
if grep -q "$str" Inputs/inp$n; then
echo inp$n >> file_list.txt
fi
다음과 같이 확인을 위해 라인 자체를 가져옵니다.
grep "$str" Files/inp$n >> lines.txt
내가 원하는 것은 특정 문자열을 찾을 때 출력에서 일부 오탐을 방지하는 것입니다. "#"은 숫자(여러 숫자일 수 있음)인 "abc#"이 포함된 행을 가져오려고 하지만 문자열 "abc"를 검색할 때 특정 단어 "abcde"가 표시되는 것을 원하지 않습니다. "abc#"과 "abcde"는 이 파일에서 같은 줄에 나타나지 않습니다.
"abc"가 포함된 줄에서 "abcde"가 포함된 줄을 무시하도록 grep에 지시하는 방법이 있습니까?
답변1
$ grep -l 'abc[0-9]' Inputs/inp*
스위치는 -l
일치하는 파일을 나열합니다. 반복하는 대신 검색할 파일 세트를 제공하는 것이 for
셸 루프를 반복하는 것보다 더 빠를 수 있습니다.