我有一个数据文件 (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
创建 2 个捕获组并将其值保存到数组 arr 中。然后检查条件,如果 arr 的第二个元素大于 15,则根据要求打印 arr 数组的第一个值。awk
的 match
函数: [0-9]+
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/