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

分享于 

2分钟阅读

ubuntu

  繁體 雙語

问题:

我有一个文本文件。 这里文件包括字符和数字,如下所示:


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 命令几乎是正确的,只要在前面或者后面有一个词边界,就只需要对 Pattern 进行匹配。

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

grep 中,可以通过将 Pattern 围绕 b 或者使用 -w switch 来启用字符匹配来执行这里操作:


$ grep -Po 'bd{4}b' data


2018


2014


2014



$ grep -Pow 'd{4}' data


2018


2014


2014




回答 2:


有了 miller ( http://johnkerl.org/miller/doc )


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



我只是提取了第二个圆柱



文件  ext  文本  TEX  Extra  提取  
相关文章