我有这个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)