5 ms·
> A pcregrep utility also used to exist, if you want expansive perl-compatible regular expressions. This has been absorbed into GNU grep with the -P option. 'p
by burntsushi 4y ago
> A pcregrep utility also used to exist, if you want expansive perl-compatible regular expressions. This has been absorbed into GNU grep with the -P option.
'pcregrep' still exists. But with PCRE2 supplanting PCRE, it is now spelled 'pcre2grep'.
I don't know the precise history of 'grep -P' and whether 'pcregrep' was actually absorbed into it, but 'pcregrep' is its own thing with its own features. For example, it has a -M/--multiline flag that no standard grep (that I'm aware of) has. (Although there are some work-arounds, e.g., by treating NUL as the line terminator via the -z/--null-data flag in GNU grep.)
- chasil 4y agoOddly, there are pcre2 packages in RedHat/Alma 9, but they do not include a pcre2grep. GNU grep is also linked to pcre, not pcre2. # pcre2grep bash: pcre2grep: command not found... # yum install pcre2grep Last metadata expiration check: 1:58:58 ago on Tue 13 Dec 2022 11:45:44 AM CST. No match for argument: pcre2grep Error: Unable to find a match: pcre2grep # yum whatprovides pcre2grep Last metadata expiration check: 2:09:25 ago on Tue 13 Dec 2022 11:45:44 AM CST. Error: No matches found. # rpm -qa | grep pcre2 | sort pcre2-10.40-2.0.2.el9.x86_64 pcre2-syntax-10.40-2.0.2.el9.noarch pcre2-utf32-10.40-2.0.2.el9.x86_64 # which grep /usr/bin/grep # ldd /usr/bin/grep | grep pcre libpcre.so.1 => /lib64/libpcre.so.1 (0x00007efc473c4000)
- burntsushi 4y agoGNU grep recently migrated to PCRE2. My GNU grep is linked to PCRE2: $ grep --version | head -n2 grep (GNU grep) 3.8 Copyright (C) 2022 Free Software Foundation, Inc. $ ldd /usr/bin/grep linux-vdso.so.1 (0x00007ffd2ddd5000) libpcre2-8.so.0 => /usr/lib/libpcre2-8.so.0 (0x00007f4f88b81000) libc.so.6 => /usr/lib/libc.so.6 (0x00007f4f8899a000) /lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f4f88c6f000) As for pcre2grep, Archlinux includes it as part of the pcre2 package: $ pacman -Qo $(which pcre2grep) /usr/bin/pcre2grep is owned by pcre2 10.40-3 So this is a distro packaging thing. But what I said is true: pcregrep, pcre2grep and grep -P are all distinct things.