grep과 grep -f의 차이점

grep과 grep -f의 차이점

다음 3줄이 포함된 파일이 있습니다.

파일.txt

aaa|
bbb|
ccc|

다른 파일에는 다음 줄이 포함되어 있습니다.

정규식.txt

^aaa\|

$grep ^aaa\| file.txt생산하다:

aaa|

$grep -f regex.txt file.txt생산하다:

aaa|
bbb|
ccc|

grep -f의 결과가 왜 다른가요 grep?

$grep -V
grep (GNU grep) 3.1

$lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.1 LTS
Release:    18.04
Codename:   bionic

답변1

당신은 grep을 사용하고 있습니다기본 정규식. grep ^aaa\| file.txt을 입력하는 것과 같습니다 grep "^aaa|" file.txt. 파일을 읽을 때 grep -f regex.txt file.txt와 마찬가지로 grep "^aaa\|" file.txt이스케이프는 무엇 |이든 일치 ^aaa하거나 ""일치함을 의미합니다.

답변2

파일에서 정규식을 사용하는 경우 \(이스케이프)가 필요하지 않습니다. 파일에서는 \문자로 처리됩니다. 명령에서는 이스케이프 처리되고 무시됩니다(표현식에 대한 참조 누락으로 인해).

관련 정보