使用 awk 获取特定变量

使用 awk 获取特定变量

我有这个file.txt

kespaul   pts/14       2001:778:200:180 Fri May 29 11:33 - 16:40  (00:07)
kespaul   sshd         2001:778:200:180 Fri May 29 16:33 - 16:40  (00:07)
algvai    pts/2        2001:778:200:400 Fri May 29 15:02 - 16:02  (00:00)
algvai    sshd         2001:778:200:400 Fri May 29 16:02 - 16:02  (00:00)

如果开始时间等于 16,我想创建一个新的。所以我的结果应该是

kespaul   sshd         2001:778:200:180 Fri May 29 16:33 - 16:40  (00:07)
algvai    sshd         2001:778:200:400 Fri May 29 16:02 - 16:02  (00:00)

我只知道如何使用 awk 获取小时和分钟值

awk -F ' ' '{print $7}' file.txt

所以我得到了这个

11:33
16:33
15:02
16:02

答案1

您可以对各个字段进行模式匹配,例如:

awk  '$7~/^16/ {print}' file.txt

这将查看第 7 个字段,看看它是否与^16表示“以 16 开头”的正则表达式匹配。仅当它与该正则表达式匹配时,才打印该行。

答案2

您可以选择要执行某些操作的行。在您的情况下:如果字段 7 匹配16:可以通过以下方式完成:

~$ awk '$7 ~/16:/ {print}' file1.txt
kespaul   sshd         2001:778:200:180 Fri May 29 16:33 - 16:40  (00:07)
algvai    sshd         2001:778:200:400 Fri May 29 16:02 - 16:02  (00:00)

相关内容