Ok, um pouco tarde adicionando minha contribuição, mas acho que vale a pena.
O requisito para atender, de acordo com o OP, é a primeira coluna com o valor decimal de .000
ou .500
apenas. Não há estipulação quanto ao valor inicial, por faixa ou comprimento. Para robustez ele não deve ser considerado como estando restringido por qualquer coisa a não ser que não há nenhum caracter não-branco antes da primeira coluna (ou já não é a primeira coluna) e que o conteúdo da primeira coluna vai ter um ponto decimal, .
, em algum lugar.
O OP está querendo usar grep
, o que imprimirá a linha inteira quando uma correspondência for encontrada, portanto, a única coisa a fazer é criar o padrão que corresponda a tudo e somente ao necessário.
A própria simplicidade e nenhuma razão para usar sed
ou awk
como `grep pode manipular a fonte como um arquivo ou um pipe.
Para grep
um arquivo, usegrep '^[^.]*\.[05]0\{2\}\s' the_file.txt
Para grep
partir de um tubo, usemy_command | grep '^[^.]*\.[05]0\{2\}\s'
O padrão é:, ^
comece no início da linha; [^.]
, corresponda a qualquer caractere não decimal; *
, tantas vezes quanto possível (incluindo nenhuma); \.
, corresponda a um ponto decimal; [05]
, corresponda a cinco ou a zero; 0\{2\}
, combine mais 2 zeros (as barras invertidas antes da chave de abertura e fechamento impedem que o shell tente fazer a expansão da chave); \s
, corresponda a um caractere de espaço em branco (ou seja, o final da coluna - para usar em um caso de uso diferente, substitua pelo separador de colunas, geralmente um comman, um ponto-e-vírgula ou uma guia \t
).
Observe que isso corresponderá exatamente ao que o OP pediu. Ele não corresponderá .5000
ou .0000
mesmo que seja numericamente equivalente, porque o padrão procura cinco ou zero, seguido por exatamente mais 2 zeros seguidos por espaços em branco. Se isso for significativo, todas as outras respostas, até agora, falharão, pois corresponderão a qualquer número de zeros, maior que 1, após o dígito do teste. E, exceto na resposta do FloHimself, eles corresponderão a qualquer coisa na segunda coluna que comece .000
ou .500
, incluindo .0003
e .500T
, e o do FloHimself corresponderá a qualquer coisa matematicamente equivalente a .0
e.5
, não importa quantos zeros existam. O último, embora não corresponda ao que o OP declarou, provavelmente corresponderá ao que o OP precisa de qualquer maneira.
Finalmente, se a potência e a velocidade de awk
são desejadas, mesmo que o OP solicite grep
, o comando seria:
Com um arquivo awk '$1 ~ /[^.]\.[05]0{2}$/' the_file.txt
Com um cano my_command | awk '$1 ~ /[^.]\.[05]0{2}$/'