Как выполнить grep для нескольких строк, начинающихся с определенного значения

Как выполнить grep для нескольких строк, начинающихся с определенного значения

У меня есть файл, состоящий из двух столбцов с кучей чисел, и я хотел бы найти строки, в которых второй столбец начинается с 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  

Связанный контент