2014-12-09 6 views
5

Ich habe Probleme beim Anpassen der Spalte mit dem Befehl grep. Ich habe eine Testdatei (test.txt) wie folgt ..Übereinstimmungsspalte mit dem Befehl grep

Bra001325  835  T  13  c$c$c$c$c$cccccCcc  !!!!!68886676 
Bra001325  836  C  8  ,,,,,.,,  68886676 
Bra001325  841  A  6  ,$,.,,. BJJJJE 
Bra001325  866  C  2  ,.  HJ 

und ich möchte alle diese Zeilen extrahieren, die eine Reihe 866 in der zweiten Spalte hat. Wenn ich grep Befehl ich erhalte alle Linien, die die Zahl enthält, die

grep "866" test.txt 

Bra001325  835  T  13  c$c$c$c$c$cccccCcc  !!!!!68886676 
Bra001325  836  C  8  ,,,,,.,,  68886676 
Bra001325  866  C  2  ,.  HJ 

nummerieren Wie kann ich bestimmte Spalte mit grep Befehl überein?

Antwort

10

Versuch dies zu tun:

$ awk '$2 == 866' test.txt 

Keine Notwendigkeit, das Standardverhalten von awk hinzufügen {print}, befindet sich auf einem true Zustand zu drucken.

mit :

$ grep -P '^\S+\s+866\b' * 

Aber können Dateinamen zu & drucken ist ziemlich robuster als hier:

$ awk '$2 == 866{print FILENAME":"$0; nextfile}' * 
+0

Dank. Ich habe mich gefragt, ob es einen Weg mit Grep gibt? Ich frage das, weil ich viele Dateien habe und wenn ich versuche, 'awk' zu verwenden, druckt es nur die Zeilen, die mit dem Muster in diesen Dateien übereinstimmen. Mit 'grep' erhalten Sie jedoch den Dateinamen, gefolgt von der Zeile, die mit dem Muster übereinstimmt. – upendra

+0

Siehe meine bearbeitet POST –

+0

Korrigiert Tippfehler in Grep –