So greppen Sie mehrere Zeichenfolgen, die mit einem bestimmten Wert beginnen

So greppen Sie mehrere Zeichenfolgen, die mit einem bestimmten Wert beginnen

Ich habe eine Datei mit zwei Spalten und einer Reihe von Zahlen und möchte Zeilen suchen und finden, deren zweite Spalte mit 1,008 oder 1,009 oder 1,01 beginnt, ich möchte aber sowohl die 1. als auch die 2. Spalte ausdrucken.

Ich habe es versucht:

grep -Ev '^1.008|^1.009|^1.01'

aber es funktioniert nicht.

Antwort1

Wenn Sie in tabellarischen Daten nach einem Feld suchen, awkist dies Ihr goldenes Ticket:

awk '$2 ~ /^1.0(0[89]|1$)/ { print $1,$2 }' /path/to/inputfile

Dadurch wird das von Ihnen angegebene Muster („beginnt mit 1.009 or 1.009oder ist gleich 1.01“) auf das zweite Feld angewendet und bei Übereinstimmungen das erste und das zweite Feld ausgegeben.

Antwort2

Nehmen wir an, Ihre Datei exercise.txthat folgenden Namen:

a   1.008  
b   1.00005  
c   1.01  
d   1.01  
e   1.009  
awk '( $2 >= 1.008 && $2 < 1.02 ) { print $1,$2 }' exercise.txt > output.txt

Dann haben Sie:

$ head output.txt  
a   1.008  
c   1.01  
d   1.01  
e   1.009  

verwandte Informationen