Гаразд, трохи пізно додаю в свій внесок, але я думаю, що воно того варте.
Вимога, яку необхідно виконати, за ОП - це перший стовпець, що має десяткове значення .000
або .500
тільки. Немає жодних умов щодо провідного значення, ні за діапазоном, ні за довжиною. Для надійності не слід вважати, що обмежує будь-що, крім того, що перед першим стовпцем (або це вже не перший стовпець) немає порожніх символів і що вміст першого стовпця матиме десяткові крапки .
, в ньому десь.
Оперативна програма хоче використовувати 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
хоча б чисельно еквівалентний, оскільки візерунок шукає п’ять або нуль, а за ним ще точно два нулі, а потім пробіл. Якщо це важливо, то всі інші відповіді, поки що, не відповідають тому, що вони будуть відповідати будь-якій кількості нулів, більше 1, після тестової цифри. І крім відповіді по FloHimself, вони будуть відповідати нічого в другому стовпці , який починається .000
або .500
, в тому числі .0003
і .500T
, і один на FloHimself буде відповідати все , що математично еквівалентно .0
і.5
, скільки б не було нулів. Останній, хоч і не відповідає тому, що заявлено в ОП, все одно відповідає тому, що ОП потребує.
Нарешті, якщо awk
бажана потужність і швидкість, навіть незважаючи на те, що просив ОП grep
, команда буде:
З файлом awk '$1 ~ /[^.]\.[05]0{2}$/' the_file.txt
З трубою my_command | awk '$1 ~ /[^.]\.[05]0{2}$/'