Хорошо, немного опоздал с добавлением моего вклада, но я думаю, что оно того стоит.
Требование к выполнению согласно ОП - это первый столбец с десятичным значением .000
или .500
только. Там нет никаких оговорок в отношении ведущего значения, ни по диапазону, ни по длине. Для надежности не следует предполагать, что он ограничен ничем, кроме того, что перед первым столбцом нет непустых символов (или это уже не первый столбец) и что содержимое первого столбца будет иметь десятичную точку .
, в этом где-то.
OP хочет использовать grep
, который будет печатать всю строку, когда найдено совпадение, поэтому единственное, что нужно сделать, это создать шаблон, который соответствует всем и только тому, что требуется.
Сама простота и отсутствие причин использовать sed
или awk
как `grep может обрабатывать исходный код как файл или канал.
Для grep
использования файлаgrep '^[^.]*\.[05]0\{2\}\s' the_file.txt
Чтобы grep
из трубы использоватьmy_command | grep '^[^.]*\.[05]0\{2\}\s'
Шаблон:, ^
начать с начала строки; [^.]
соответствовать любому не десятичному символу; *
столько раз, сколько возможно (включая ни одного); \.
соответствует десятичной запятой; [05]
соответствует либо пять, либо ноль; 0\{2\}
, сопоставьте еще 2 нуля (обратная косая черта перед открывающей и закрывающей скобкой не позволяет оболочке попытаться выполнить расширение скобки); \s
, соответствует символу пробела (имеется в виду конец столбца - для использования в другом случае, замените его разделителем столбца, обычно это запятая, точка с запятой или табуляция \t
).
Обратите внимание, что это будет точно соответствовать тому, что спросил ОП. Он не будет совпадать .5000
или .0000
даже численно эквивалентен, потому что шаблон ищет пять или ноль, за которыми следуют ровно 2 ноля, за которыми следует пробел. Если это важно, то все остальные ответы до сих пор терпят неудачу, так как они будут соответствовать любому количеству нулей, больше 1, после контрольной цифры. И кроме ответа от FloHimself, они будут соответствовать чему-либо во втором столбце, который начинается .000
или .500
, включая .0003
и .500T
, и тот, что FloHimself, будет соответствовать всему, что математически эквивалентно .0
и.5
независимо от того, сколько нулей. Последний, хотя и не соответствует заявленному ФП, в любом случае, скорее всего, будет соответствовать его нуждам.
Наконец, если awk
требуется мощность и скорость, даже если запрашивается OP grep
, тогда команда будет:
С файлом awk '$1 ~ /[^.]\.[05]0{2}$/' the_file.txt
С трубкой my_command | awk '$1 ~ /[^.]\.[05]0{2}$/'