2009-03-11 12 views
3
ls -ltr|grep 'Mar 4'| awk '{print $9 }'|zcat -fq |grep 12345 

Ich möchte alle Dateien an einem bestimmten Datum geändert und dann zcat sie suchen und die Felder nach einer Zeichenfolge suchen.zcat pipe zu grep

das obige funktioniert nicht, da es den Dateinamen für die Zeichenfolge nicht die Datei selbst sucht.

Irgendwelche Hilfe?

M

Antwort

1

Versuchen find stattdessen verwenden. Und/oder xargs.

2

Verwenden xargs die grep auf dem Dateinamen von Ausgang awk auszuführen:

ls -ltr | grep 'Mar 4' | awk '{print 9}' | xargs zcat -fq | grep 12345 

Oder, glaube ich, den Rest des Rohres von awk selbst laufen.

1

Wenn ich Ihre Befehlszeile richtig gelesen habe, versucht ihr zcat, die Dateinamen anstelle ihres Inhalts zu entpacken. Verwenden Sie xargs dieses Problem zu lösen:

ls -ltr|grep 'Mar 4'| awk '{print $9 }'|xargs zcat -fq |grep 12345 
0

Zusätzlich zu den feinen Antworten über die Verwendung von xargs oder find, können Sie auch loswerden einen zusätzlichen Prozess erhalten, indem zcat und Rohrleitungen zu zgrep oder grep -Z statt zu beseitigen.

+0

Auf meinem System (OS X) tut Grep -Z nicht, was Sie zu denken scheinen, dass es tut. –

+0

Offenbar nicht auf dem Linux habe ich auch, entweder. Hoppla. Zgrep ist also die bessere Wahl. – dwc