awk encontrar linhas com dois jogos

0

O arquivo contém

Today is 1 nice day
This is a perfect day
Tomorrow is 1/2 cool 1/2 hot day
What is Toy Story
Tonight is a dark night

Como faço para encontrar linhas
começa com "To" e
terminar com "dia"

Nenhum desses comandos está funcionando

awk '/^To[*]day$/ {print}' file

awk '/^To*day$/   {print}' file

awk '/^To.day$/   {print}' file

awk '/^To[.]day$/ {print}' file

OBRIGADO!

    
por Rina 17.01.2017 / 23:17

2 respostas

3

Nas expressões regulares, . corresponde a qualquer caractere e * é um qualificador que você acrescenta a algo para dizer 0 ou mais desse algo . Então, .* é qualquer número (0 ou mais) de caracteres .

Então, como o Angelo disse, você poderia fazer:

awk '/^To.*day$/'

O início do registro ( ^ ) seguido por To seguido por qualquer número de caracteres ( .* ) seguido por day seguido pelo final do registro ( $ ).

Como alternativa, você pode escrevê-lo:

awk '/^To/ && /day$/'

Isso também corresponderia aos registros em que o que há entre To e day não contém caracteres. Outra diferença seria em casos como quando você substitui To / day por abc / cde , o que corresponderia a abcde .

    
por 18.01.2017 / 00:14
2
awk '$0 ~ /^To.*day$/  {print}' file

ou apenas

awk '/^To.*day$/  {print}' file

ou até mesmo (como a ação padrão é imprimir o registro):

awk '/^To.*day$/' file
    
por 17.01.2017 / 23:48

Tags