about summary refs log tree commit diff
path: root/Functions/Example
diff options
context:
space:
mode:
Diffstat (limited to 'Functions/Example')
-rw-r--r--Functions/Example/zpgrep25
1 files changed, 25 insertions, 0 deletions
diff --git a/Functions/Example/zpgrep b/Functions/Example/zpgrep
new file mode 100644
index 000000000..8b1edaa1c
--- /dev/null
+++ b/Functions/Example/zpgrep
@@ -0,0 +1,25 @@
+# Usage: zpgrep <perl5-compatible regex> <file1> <file2> ... <fileN>
+#
+
+zpgrep() {
+local file pattern
+
+pattern=$1
+shift
+
+if ((! ARGC)) then
+	set -- -
+fi
+
+pcre_compile $pattern
+pcre_study
+
+for file
+do
+	if [[ "$file" == - ]] then
+		while read -u0 buf; do pcre_match $buf && print $buf; done
+	else
+		while read -u0 buf; do pcre_match $buf && print $buf; done < "$file"
+	fi
+done
+}