awk + ​​如何获取文件中的最新数字但排除数字直到 4 位

标签 awk sed

我们有如下文件

更多文件

-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

最佳答案

像这样?

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

输出:

1623222654527
1623222654679
1623222654744

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

关于awk + ​​如何获取文件中的最新数字但排除数字直到 4 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67901338/

相关文章:

regex - 如何使用 sed(或类似工具)删除两个 html 标签之间的所有行?

awk - 是否有 INT_MIN 和 INT_MAX 等价的 awk?

vim - 从管道命令的输出中使用 vim 打开文件

Linux搜索和替换一个复杂的字符串

linux - 使用 Ansible 仅删除文件中第一次出现的行

bash - 如何从字符串中提取子字符串

regex - Awk match() - 每行多个

linux - 解析 Linux 命令输出

awk - 使用 AWK 修改输出

regex - 为什么 sed 不像 awk 那样追加换行符?