Ok, aggiungo un po 'tardi al mio contributo, ma penso che ne valga la pena.
Il requisito da soddisfare, per l'OP è la prima colonna con il valore decimale .000
o .500
solo. Non è previsto il valore guida, per intervallo o lunghezza. Per robustezza, non si deve presumere che sia vincolato da nulla tranne che non ci sono caratteri non vuoti prima della prima colonna (o non è più la prima colonna) e che il contenuto della prima colonna avrà un punto decimale .
, in esso da qualche parte.
L'OP vuole usare grep
, che stamperà l'intera riga quando viene trovata una corrispondenza, quindi l'unica cosa da fare è creare il modello che corrisponda a tutto e solo ciò che è richiesto.
Semplicità stessa, e nessun motivo per usare sed
o awk
come `grep può gestire il sorgente come file o pipe.
Per grep
un file utilizzaregrep '^[^.]*\.[05]0\{2\}\s' the_file.txt
Da grep
una pipa, usaremy_command | grep '^[^.]*\.[05]0\{2\}\s'
Il modello è:, ^
inizia all'inizio della riga; [^.]
, abbina qualsiasi carattere non decimale; *
, il maggior numero di volte possibile (incluso nessuno); \.
, abbina un punto decimale; [05]
, abbina un cinque o uno zero; 0\{2\}
, abbina altri 2 zeri (le barre rovesciate prima della parentesi aperta e chiusa impediscono alla shell di tentare di eseguire l'espansione della parentesi); \s
, abbina un carattere di spazio (che indica la fine della colonna - da utilizzare in un caso d'uso diverso, sostituiscilo con il separatore di colonna, in genere un segno comune, un punto e virgola o una scheda \t
).
Si noti che questo corrisponderà esattamente a ciò che l'OP ha chiesto. Essa non corrispondere .5000
o .0000
anche se numericamente equivalente, perché l'aspetto del modello per cinque o zero, seguiti da esattamente 2 più zeri seguiti da spazi bianchi. Se questo è significativo, allora tutte le altre risposte, finora, falliscono in quanto corrisponderanno a qualsiasi numero di zeri, maggiore di 1, dopo la cifra del test. E ad eccezione della risposta di FloHimself, corrisponderanno a qualsiasi cosa nella seconda colonna che inizia .000
o .500
, incluso .0003
e .500T
, e quella di FloHimself corrisponderà a qualsiasi cosa matematicamente equivalente a .0
e.5
, non importa quanti zeri ci siano. L'ultimo, pur non corrispondendo a quanto dichiarato dall'OP, probabilmente corrisponderà a ciò di cui l'OP ha bisogno comunque.
Infine, se awk
si desidera la potenza e la velocità di , anche se l'OP ha richiesto grep
, il comando sarebbe:
Con un file awk '$1 ~ /[^.]\.[05]0{2}$/' the_file.txt
Con una pipa my_command | awk '$1 ~ /[^.]\.[05]0{2}$/'