Eu tenho um arquivo de texto. Este arquivo inclui caracteres e números como segue:
ANKR00TUR_R_20183240000_01D_30S_MO.rnx: 2018 11 20 00 00 0.0000000 GPS TIME OF FIRST OBS
brmu3350.14o: 2014 12 1 0 0 0.0000000 GPS TIME OF FIRST OBS
KNY12040.14o: 2014 7 23 0 0 0.0000000 GPS TIME OF FIRST OBS
rinex_quantity:grep "TIME OF FIRST OBS" * > time_of_first_epochs
Preciso extrair apenas números de 4 dígitos e armazená-los em outro arquivo da seguinte forma:
2018
2014
2014
Eu apliquei o seguinte código, mas ele extrai todos os números de 4 dígitos:
grep -Po "\d{4}" data
2018
3240
2018
0000
3350
2014
0000
1204
2014
0000
Seu
grep
comando estava quase correto, basta ancorar o padrão para corresponder apenas se houver um limite de palavra antes ou depois dele.Os limites da palavra são padrões de comprimento zero que correspondem entre um caractere de palavra (letras, dígitos, sublinhado) e um caractere não-palavra (por exemplo, espaços, outra pontuação, final de linha e tudo mais).
Em
grep
, você pode fazer isso envolvendo seu padrão com\b
, ou usando a-w
chave para habilitar a correspondência de palavras:com Miller ( http://johnkerl.org/miller/doc ) é
Como saída você terá
Minha entrada é
Eu simplesmente extraí a segunda coluna com cut