grep
grep binary file
Binary file (standard input) matches
-a | --text Process a binary file as if it were text; this is equivalent to the ‘--binary-files=text’ option.
grep -v
Wie sucht man ob ein Prozess läuft?
# ps aux | grep smb root 699 0.0 0.4 28800 4036 ? Ss Oct22 0:43 smbd -F root 768 0.0 0.1 28800 1604 ? S Oct22 0:04 smbd -F root 21411 0.0 0.0 4680 772 pts/0 S+ 18:06 0:00 grep --color=auto smb
Das ist zuviel Output, weil auch der grep-Prozess selber angezeigt wird. Dafür gibt es eine einfältige Lösung:
# ps aux | grep smb | grep -v grep root 699 0.0 0.4 28800 4036 ? Ss Oct22 0:43 smbd -F root 768 0.0 0.1 28800 1604 ? S Oct22 0:05 smbd -F
Aber wie geht es besser?
ps aux | grep [s]mb root 699 0.0 0.4 28800 4036 ? Ss Oct22 0:43 smbd -F root 768 0.0 0.1 28800 1604 ? S Oct22 0:05 smbd -F
Warum funktioniert das? Ganz einfach, weil in der Prozessliste jetzt der String „smb“ nicht mehr vorkommt beim grep-Befehl, sondern der String „[s]mb“. Gesucht wird von dem Befehl aber trotzdem nach „smb“.
Braucht man nur die PID vom Prozess geht es aber einfacher:
# pgrep smb 699 768
Soll das ganze nur zum Beenden der Prozesse genutzt werden, braucht man gar keinen grep mehr.
# killall smbd
Grep Dingsda
Aufgabe: Beschreiben Sie Grep wie bei Dingsda… ohne das Wort Grep zu benutzen
Lösung: Microsoft Windows Powershell
Änderungen am grep Befehl
echo test | grep -ir test
# echo test | grep -ir test test
> echo test | grep -ir test .bashrc: test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
* Noteworthy changes in release 2.11 (2012-03-02) [stable] ... ** New features If no file operand is given, and a command-line -r or equivalent option is given, grep now searches the working directory. Formerly grep ignored the -r and searched standard input nonrecursively. An -r found in GREP_OPTIONS does not have this new effect. ...
Useless Use of Cat Award
Mitlerweile bin ich ja über mehrere Hinweise gestoßen, dass es manche Menschen einfach nicht vertragen eine *sinnlose* cat Anweisung in einem Shellscript zu sehen. Der ganze Hintergrund der Geschichte wird ja z.B. hier http://partmaps.org/era/unix/award.html zusammengefasst.
Ich denke aber, dass auch ein Konstrukt wie "cat /var/log/messages | grep <Asudruck>" durchaus seine Berechtigung hat. Will ich etwa das Logfile von gestern sehen wird daraus deutlich einfacher ein "zcat /var/log/messages | grep <Asudruck>" oder "bzcat /var/log/messages | grep <Asudruck>" auf der nächsten Maschine daraus. Und das kann wohl der grep alleine noch nicht…
Das Wort des Tages – Part 3
Das Wort des Tages sollte grundsätzlich öfter kommen, aber ich komm halt nicht dazu:
Die Invertierung von Alles ist Nichts!
Hier der Beweis für diese Aussage:
Liefert den kompletten Inhalt der Datei:
grep "" <dateiname>
Liefert nix mehr, da die Suche invertiert wird:
grep -v "" <dateiname>
Die Mächtigkeit der Unix Toolbox
Auf der Suche nach einer Möglichkeit die Formate in einer Musiksammlung etwas zu vereinheitlichen, habe ich mir die folgende schöne Zeile zusammengeschustert:
file * | grep " MPEG ADTS, layer II, v1" | cut -d":" -f1 | xargs -i -d"n" lame --resample 44.1 --mp2input {}
file findet den Dateitypen für mich raus
grep sucht mir alle MPEG2 Files unabhängig von der Dateierweiterung
cut schneidet wider nur den aktuellen Dateinamen raus
xargs ruft mir den lame mit den entsprechenden optionen auf, damit diese Dateien auch überall abgespielt werden