Хорошо, немного опоздал с добавлением моего вклада, но я думаю, что оно того стоит.
Требование к выполнению согласно ОП - это первый столбец с десятичным значением .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}$/'