Grep dados específicos da string [duplicate]

2

Aqui estão os dados:

Valid from: Fri Nov 24 12:11:28 EST 2017 until: Sun Nov 24 12:11:28 EST 2019
Valid from: Fri Feb 24 13:21:19 EST 2017 until: Thu Feb 24 13:31:19 EST 2022
Valid from: Tue Dec 20 12:01:19 EST 2016 until: Fri Dec 20 12:11:17 EST 2041

Eu quero extrair apenas os dados que estão escritos depois até.

Por exemplo, eu deveria ter apenas Sun Nov 24 12:11:28 EST 2019 .

Obrigado antecipadamente.

Obrigado

    
por Sachin 20.08.2018 / 10:10

5 respostas

8

Tente também

awk '{sub (/^.*until: /, "")} 1' file
Sun Nov 24 12:11:28 EST 2019
Thu Feb 24 13:31:19 EST 2022
Fri Dec 20 12:11:17 EST 2041

ou ainda mais curto

sed 's/^.*until: //' file
Sun Nov 24 12:11:28 EST 2019
Thu Feb 24 13:31:19 EST 2022
Fri Dec 20 12:11:17 EST 2041
    
por 20.08.2018 / 10:38
5

Com o GNU grep

echo "$string" | grep -oP 'until: \K.*'

Que corresponde à palavra "até:", então o \K esquece tudo o que foi correspondido e, em seguida, o .* pode corresponder a tudo depois disso.

    
por 20.08.2018 / 16:47
3

Ao definir o awk delimitador como "until:" , você pode obter a sequência subsequente enquanto esse texto existir em sua sequência. awk -F'until:' '{print $2}'

echo "Valid from: Fri Nov 24 12:11:28 EST 2017 until: Sun Nov 24 12:11:28 EST 2019" | awk -F'until:' '{print $2}'
    
por 20.08.2018 / 11:27
2

grep -o 'until: [^V]*' file | cut -d ':' -f 2-

    
por 20.08.2018 / 10:15
2

Se o formato for sempre o mesmo, você também pode tentar:

cut -d':' -f 5- /path-to-file 
    
por 20.08.2018 / 11:05