У меня есть файл, состоящий из двух столбцов с кучей чисел, и я хотел бы найти строки, в которых второй столбец начинается с 1,008 или 1,009 или 1,01, но я хотел бы напечатать оба столбца, первый и второй.
Я пытался:
grep -Ev '^1.008|^1.009|^1.01'
но это не работает.
решение1
При поиске одного поля в табличных данных awk
ваш золотой билет:
awk '$2 ~ /^1.0(0[89]|1$)/ { print $1,$2 }' /path/to/inputfile
Это применит указанный вами шаблон («начинается с 1.009 or 1.009
или равно 1.01
») ко второму полю, а в случае совпадений выведет первое и второе поля.
решение2
Предположим, что ваш файл exercise.txt
имеет следующее имя:
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
Тогда у вас есть:
$ head output.txt
a 1.008
c 1.01
d 1.01
e 1.009