grep: 작은 문자열 내에서 더 큰 문자열 찾기

grep: 작은 문자열 내에서 더 큰 문자열 찾기

입력을 받아 텍스트 파일과 일치시키는 작은 쉘 스크립트를 작성 중입니다.

그런데 입력 문자열이 파일의 문자열보다 커서 일치시키고 싶습니다.

사용자 입력:

abc-de-ef-gh1

파일의 텍스트:

This is test,-de-ef-gh,This is test

grep사용자 입력에 기존 파일을 사용하면 긍정적인 결과를 원합니다.

이 목표를 어떻게 달성할 수 있나요? grep으로는 이 작업을 수행할 수 없습니다.

답변1

패턴이 포함된 파일이 있습니다. grep해당 옵션을 사용하여 스키마를 읽을 수 있습니다 -f. 문자열이 $input패턴과 일치하는지 확인하려면 patterns.txt다음을 수행 하십시오.

printf '%s\n' "$input" |
if grep -q -f patterns.txt; then
    echo 'matches'
else
    echo 'does not match'
fi

grep이는 중간 패턴으로 문자열 내용을 반복합니다 patterns.txt. 대신 이 문자열을 사용할 수 bash있습니다.

if grep -q -f patterns.txt <<<"$input"; then
    echo 'matches'
else
    echo 'does not match'
fi

출력 생성을 중지합니다(종료 상태에만 관심이 있습니다) -q.grep

패턴이 고정 문자열(정규식이 아님)인 경우 -F다른 플래그( )와 함께 with를 사용해야 합니다.grepgrep -qF -f ...

답변2

bash, cutgrep:을 사용하십시오 .

read -p "Hey user, input something: " $n
printf "Match "
grep -m 1 -q -f <(cut -d, -f2 file) <<< "$n" || printf "not "
printf "found.\n"

노트:

  • 더 짧은 문자열 내에서 더 긴 문자열을 검색하는 것은 불가능하지만 이것이 실제로 수행하는 작업은 더 짧은 문자열이 존재하는 경우를 찾는 것입니다.문서더 긴 문자열을 일치시킵니다.
  • cut중간 필드를 추출하는 데 사용됩니다.문서
  • grep사용자 입력 문자열의 중간 필드를 검색합니다.
  • printf피드백을 제공하세요.

관련 정보