mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-19 11:31:26 +01:00
32 lines
498 B
Text
32 lines
498 B
Text
# Usage: zpgrep <perl5-compatible regex> <file1> <file2> ... <fileN>
|
|
#
|
|
|
|
zpgrep() {
|
|
local file pattern ret
|
|
|
|
pattern=$1
|
|
shift
|
|
ret=1
|
|
|
|
if ((! ARGC)) then
|
|
set -- -
|
|
fi
|
|
|
|
zmodload zsh/pcre || return
|
|
pcre_compile -- "$pattern"
|
|
pcre_study
|
|
|
|
for file
|
|
do
|
|
if [[ "$file" == - ]] then
|
|
while IFS= read -ru0 buf; do
|
|
pcre_match -- "$buf" && ret=0 && print -r -- "$buf"
|
|
done
|
|
else
|
|
while IFS= read -ru0 buf; do
|
|
pcre_match -- "$buf" && ret=0 && print -r -- "$buf"
|
|
done < "$file"
|
|
fi
|
|
done
|
|
return "$ret"
|
|
}
|