문자열을 포함하지만 같은 줄에 다른 문자열을 포함하지 않는 파일에서 줄을 추출합니다.

문자열을 포함하지만 같은 줄에 다른 문자열을 포함하지 않는 파일에서 줄을 추출합니다.

특정 문자열이 포함된 파일의 파일 이름 목록을 가져오기 위해 스크립트에서 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셸 루프를 반복하는 것보다 더 빠를 수 있습니다.

관련 정보