首页 > 解决方案 > awk + ​​如何获取文件中的最新数字但排除数字直到 4 位数

问题描述

我们有如下文件

more file

-rwxrwxrwt   3 hdfs hdfs         30 2021-06-09 07:10 /noij/gtdf/license_alerts/alert_1_1623222654527
-rwxrwxrwt   3 hdfs hdfs         30 2021-06-09 07:10 /noij/gtdf/license_alerts/alert_1_1623222654679
-rwxrwxrwt   3 hdfs hdfs         30 2021-06-09 07:10 /noij/gtdf/license_alerts/alert_1_1623222654744
-rwxrwxrwt   3 hdfs hdfs         30 2021-06-09 08:02 /noij/gtdf/license_alerts/alert_1_1623225746040_69
-rwxrwxrwt   3 hdfs hdfs         30 2021-06-09 08:02 /noij/gtdf/license_alerts/alert_1_1623225746059_66
-rwxrwxrwt   3 hdfs hdfs         30 2021-06-09 08:02 /noij/gtdf/license_alerts/alert_1_1623225746061_65
-rwxrwxrwt   3 hdfs hdfs         30 2021-06-09 08:02 /noij/gtdf/license_alerts/alert_1_1623225746162_65

虽然我需要取最后一个数字,但如果数字包含 1-3 位则排除

预期结果应该是

1623222654527
1623222654679
1623222654744

所以我到目前为止的方法是

sed s'/_/ /g' file | awk '{print $NF}'  

但它的印刷品

1623222654527
1623222654679
1623222654744
69
66
65
65

如何改进我的语法以排除具有 1 位或 2 位或 3 位数字的最新数字?

所以我们得到这样的输出

1623222654527
1623222654679
1623222654744

标签: awksed

解决方案


像这样?:

$ awk -F_ 'length($NF)>3{print $NF}' file

输出:

1623222654527
1623222654679
1623222654744

使用_as 字段分隔符,如果最后一个字段的长度$NF大于 3,则输出最后一个字段。


推荐阅读