GNU/Linux >> LINUX-Kenntnisse >  >> Linux

grep, um Daten in der ersten Spalte zu suchen

Verwenden Sie awk. cat myfile | awk '{print $1}' | grep query


Wenn Sie awk verwenden können , versuchen Sie Folgendes:

text.txt
--------
Product   Cost
Abc....def  10
Abc.def     20
ajsk,,lll   04

With only awk:
awk '$1 ~ /^Abc.*def$/ { SUM += $2 } END { print SUM } ' test.txt
Result: 30

With grep and awk:
grep "^Abc.*def.*\d*$" test.txt | awk '{SUM += $2} END {print SUM}'
Result: 30

Erklärung:

  • awk liest jede Zeile und vergleicht die erste Spalte mit einem regulären Ausdruck (regex)
  • Die erste Spalte muss mit Abc beginnen, gefolgt von irgendetwas (null oder mehr Mal) und endet mit def
  • Wenn eine solche Übereinstimmung gefunden wird, fügen Sie der SUM-Variablen die zweite Spalte hinzu
  • Nachdem alle Zeilen gelesen wurden, geben Sie die Variable aus

Grep extrahiert jede Zeile, die mit Abc beginnt, gefolgt von irgendetwas, gefolgt von def, gefolgt von irgendetwas, gefolgt von einer Zahl (null oder mehrmals) am Ende. Diese Leitungen werden zu awk geleitet/geleitet. Awk erhöht einfach SUM für jede empfangene Zeile. Nach dem Lesen aller empfangenen Zeilen gibt es die Variable SUM aus.


Linux
  1. Regex und grep:Datenfluss und Bausteine

  2. Wie suche ich in bestimmten Dateien, die einem Muster entsprechen?

  3. Wie schneide ich die ersten n und letzten n Spalten?

  4. Wie lösche ich die erste Spalte (die eigentlich Zeilennamen sind) aus einer Datendatei in Linux?

  5. grep for term und schließt einen anderen Begriff aus

Daten extrahieren und anzeigen mit awk

So verwenden Sie den grep-Befehl unter Linux/UNIX

So schließen Sie in Grep aus

So führen Sie eine Mustersuche in Dateien mit Grep durch

Linux-awk-Befehl mit 10 Beispielen

Verwendung von awk mit Spaltenwertbedingungen