shell - 如果行中的特定数字大于数字,则 awk 获取第一列

标签 shell awk

我有一个数据文件 (file.txt) 包含以下几行:

123 pro=tegs, ETA=12:00, team=xyz,user1=tom,dom=dby.com
345 pro=rbs, team=abc,user1=chan,dom=sbc.int,ETA=23:00
456 team=efg, pro=bvy,ETA=22:00,dom=sss.co.uk,user2=lis

只有当 ETA= 数字大于 15 时,我才希望得到第一列 ($1),像这里一样,我将首先得到第二行和第三行只有列是预期的。

345
456

我试过 cat file.txt | awk -F [,TPF=]' '{print $1}' 但它打印的整行最后都有 ETA。

最佳答案

使用您展示的示例,请尝试遵循 GNU awk 代码。在我使用正则表达式 (^[0-9]+).*ETA=([0-9]+) 的地方使用 GNU awkmatch 函数: [0-9]+ 创建 2 个捕获组并将其值保存到数组 arr 中。然后检查条件,如果 arr 的第二个元素大于 15,则根据要求打印 arr 数组的第一个值。

awk '
match($0,/(^[0-9]+).*\<ETA=([0-9]+):[0-9]+/,arr) && arr[2]+0>15{
  print arr[1]
}
' Input_file

关于shell - 如果行中的特定数字大于数字,则 awk 获取第一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74610426/

相关文章:

linux - "cat"和 "vim"之间的不同显示

c - 管道错误 : int not a function

bash - mysqldump 与 db 在一个单独的文件中

linux - 文件的最后两行相同表示触发电子邮件

linux - awk 在后台运行时的输出

linux - IFS 变量是否发生以下变化?

linux - wc -l on unix 命令返回值

linux - 将 tar.gz 打包成 shell 脚本

AWK:比较两个文件中的两个不同列

linux - 如何将一些行移动到文件的顶部?