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