
내가 이것을 실행할 때 :
find . -name "my.log*.gz" -print | \
parallel zgrep -e "\(text1\|text2\).*Exception"
/(text1|text2).*Exception/
폴더의 모든 파일에서 일치하는 줄을 모두 찾으려면 다음 오류 메시지가 표시됩니다.
zsh:1: no matches found: (text1|text2).*Exception
오류 메시지로 판단하면 (text1|text2).*Exception
파일 이름으로 취급되는 것 같습니다. 내가 여기서 뭘 잘못하고 있는 걸까?
답변1
-E
정규식 확장을 위해
find . -name "my.log*.gz" -print | \
parallel zgrep -E "\(text1\|text2\).*Exception"
답변2
더 많은 인용이 필요합니다:
find . -name "*.gz" -print |
parallel -q zgrep -e "\(text1\|text2\).*Exception"
실제로 무엇이 실행되고 있는지 확인해 -vv
보세요 .--dr
답변3
parallel
패키지 의 명령을 사용하면 moreutils
명령이 다음과 같이 단순화될 수 있습니다.
parallel zgrep -e "\(text1\|text2\).*Exception" -- my.log*.gz
zgrep
이것은 쉘 패턴과 일치하는 각 파일에 대해 하나씩 병렬 인스턴스를 실행합니다 my.log*.gz
. 쉘은 명령을 실행하기 전에 패턴을 확장합니다. 따라서 별도의 통화가 필요하지 않습니다 find
.
궁금하신 분들은 zgrep
옵션으로 이용해보세요-H
어떤 파일성냥.