从文本文件中提取长度固定的数字

从文本文件中提取长度固定的数字

我有一个文本文件。该文件包含以下字符和数字:

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

答案1

您的grep命令几乎是正确的,您只需将模式锚定为仅当其之前或之后有单词边界时才进行匹配。

单词边界是零长度模式,匹配单词字符(字母、数字、下划线)和非单词字符(例如空格、其他标点符号、行尾和其他所有内容)。

在 中grep,您可以通过用 包围模式来做到这一点\b,或者通过使用-w开关来启用单词匹配:

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

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

答案2

磨坊主文档) 是:

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

作为输出你将拥有

year
2014
2014

Mi 输入

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

我只是用 cut 提取了第二列

相关内容