Como eu usaria o sed ou o awk para extrair certas linhas em um arquivo

1

Se eu quisesse pesquisar todas as linhas em um arquivo que comece com uma data, como "1º de maio", como eu faria isso com sed ou awk? Eu preciso extrair esses dados e enviar para a tela ou um arquivo. Obrigado.

    
por user53029 05.05.2015 / 04:26

2 respostas

6

Para extrair linhas que começam com May 1 :

grep "^May 1\b" file

Ou:

sed -n '/^May 1\>/p' file

Ou:

awk '/^May 1\>/' file

Os dois acima assumem uma ferramenta, como o GNU awk ou sed, que suporta \> como um limite de palavra regex. A finalidade do limite da palavra é impedir que a regex corresponda, por exemplo, May 10 .

Mais

Se você estiver procurando por qualquer dia em maio:

grep -E "^May [[:digit:]]{1,2}\b" file

Se você estiver procurando por qualquer dia de qualquer mês:

grep -E "^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [[:digit:]]{1,2}\b" file
    
por 05.05.2015 / 04:45
0
printf %s\n 'Apr 30 aaa' \
             'May 1 bbb' \
             'Feb 29 ccc' \
             'Feb 30 ddd' |

sed -n '/^\(Apr\|Jun\|Sep\|Nov\) \([1-9]\|[12][0-9]\|30\)\>/p
        /^\(Jan\|Mar\|Jul\|Aug\|May\|Oct\|Dec\) \([1-9]\|[12][0-9]\|3[01]\)\>/p
        /^\(Feb\) \([1-9]\|[12][0-9]\)\>/p'

Saída:

Apr 30 aaa
May 1 bbb
Feb 29 ccc
    
por 05.05.2015 / 05:16