Ich werde mich nie leicht an diese kryptischen Befehlsmodifikatoren erinnern, also habe ich die oberste Antwort genommen und sie in eine Funktion in meiner ~/.bashrc
Datei umgewandelt:
cgrep() {
# For files that are arrays 10's of thousands of characters print.
# Use cpgrep to print 30 characters before and after search patttern.
if [ $# -eq 2 ] ; then
# Format was 'cgrep "search string" /path/to/filename'
grep -o -P ".{0,30}$1.{0,30}" "$2"
else
# Format was 'cat /path/to/filename | cgrep "search string"
grep -o -P ".{0,30}$1.{0,30}"
fi
} # cgrep()
So sieht es in Aktion aus:
$ ll /tmp/rick/scp.Mf7UdS/Mf7UdS.Source
-rw-r--r-- 1 rick rick 25780 Jul 3 19:05 /tmp/rick/scp.Mf7UdS/Mf7UdS.Source
$ cat /tmp/rick/scp.Mf7UdS/Mf7UdS.Source | cgrep "Link to iconic"
1:43:30.3540244000 /mnt/e/bin/Link to iconic S -rwxrwxrwx 777 rick 1000 ri
$ cgrep "Link to iconic" /tmp/rick/scp.Mf7UdS/Mf7UdS.Source
1:43:30.3540244000 /mnt/e/bin/Link to iconic S -rwxrwxrwx 777 rick 1000 ri
Bei der fraglichen Datei handelt es sich um eine durchgehende 25-KByte-Zeile, und es ist hoffnungslos, mit regulärer Datei das zu finden, wonach Sie suchen grep
.
Beachten Sie die zwei verschiedenen Möglichkeiten, wie Sie cgrep
diese Parallelenmethode aufrufen können grep
.
Es gibt eine "raffiniertere" Möglichkeit, die Funktion zu erstellen, bei der "$ 2" nur übergeben wird, wenn sie gesetzt ist, wodurch 4 Codezeilen gespeichert werden. Ich habe es aber nicht zur Hand. So etwas wie ${parm2} $parm2
. Wenn ich es finde, werde ich die Funktion und diese Antwort überarbeiten.