извлечение чисел, длины которых фиксируются от текстового файла

У меня есть текстовый файл. Этот файл включает символы и числа следующим образом:

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

Я должен извлечь только 4 числа цифр и сохранить их в другой файл следующим образом:

2018
2014
2014

Я применил следующий код, но он извлекает все 4 числа цифры:

grep  -Po "\d{4}" data

2018
3240
2018
0000
3350
2014
0000
1204
2014
0000
3
задан 14 January 2019 в 13:14

2 ответа

Ваш grep команда была почти корректна, просто необходимо привязать шаблон для соответствия, только если существует граница слова прежде или после него.

границы Word являются шаблонами нулевой длины, которые соответствуют между словесным символом (буквы, цифры, подчеркивание) и символом неслова (например, пробелы, другая пунктуация, конец строки и все остальное).

В grep, можно или сделать это путем окружения шаблона \b, или при помощи эти -w переключатель для включения слова, соответствующего:

$ grep -Po '\b\d{4}\b' data
2018
2014
2014

$ grep -Pow '\d{4}' data
2018
2014
2014
7
ответ дан 1 December 2019 в 13:22


с мельником ( http://johnkerl.org/miller/doc )

mlr --implicit-csv-header --pprint  cut -f 2 then label year input

, Как произведено, Вы будете иметь

year
2014
2014

, вход мили

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

, я просто извлек второй столбец с сокращением

0
ответ дан 1 December 2019 в 13:22

Другие вопросы по тегам:

Похожие вопросы: