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, awk
ist 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.009
oder 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.txt
hat 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