2011-10-04 6 views
3

변수에 저장되어있는 다른 txt 파일의 문자열을 txt 파일을 통해 검색하는 bash 스크립트를 작성하려고합니다. 그러나 문자열에는 특수 문자가 많이 포함되어 있으며 어떤 이유로 인해 grep 명령이 손상된 것으로 보입니다. 문자열은 다음 Sometxt ^/someurl/$ http://somewebsite.com/Grep 명령이 특수 문자로 바뀌 었습니까?

내가 사용 grep 명령이

grep -v "$string" file.txt >> new_file.txt 

이 작동하지 않는 것 내가 실제 grep 명령을 반향하는 경우? 다음을 사용 :

echo "grep -v \"$string\" file.txt >> new_file.txt" 

출력이 모두 엉망입니다.

grep 명령을 입력하고 실제 문자열을 입력하면 쉘이 특수 문자를 확장하려고 시도하고 있지만 문자열 내에서 모두 이스케이프 처리하지 않는 것으로 가정합니다.

누구든지 아이디어가 있습니까?

감사합니다.

+2

echo는 "실제로 실행되고있는 것"을 찾아내는 데는 좋지 않은 방법입니다.이를 위해'set -x'를 사용하십시오. – Sorpigal

답변

5

시도의 fgrep (또는 grep -F) 기본 그렙으로

., $ 같은 문자에 특별한 의미를 부여, 기본적인 정규 표현식으로 검색 패턴을 해석 ^[]

1

안된하지만,이 help

grep -v "$(printf "%q" "$string")" file.txt >> new_file.txt 

bash 내장 printf %q 포맷터는 특수 문자를 이스케이프합니다.

관련 문제