Ich werde mich nie leicht an diese kryptischen Befehlsmodifikatoren erinnern, also habe ich die oberste Antwort genommen und sie in eine Funktion in meiner ~/.bashrcDatei 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 cgrepdiese 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.