我试图过滤具有模式 04:26 的行。我期待着这个命令,
cat file1.txt | grep -E '04:26'
Run Code Online (Sandbox Code Playgroud)
过滤时间戳后包含 04:26 的行。相反,我也得到了第二行。
文件1.txt
2022-12-23T04:26:47.748412+00:00 raspberrypi dnsmasq-dhcp[698]: DHCPREQUEST(eth0) 192.168.42.17 04:c8:07:23:04:26
2022-12-23T04:26:47.749307+00:00 raspberrypi dnsmasq-dhcp[698]: DHCPACK(eth0) 192.168.42.17 04:c8:07:23:34:13
Run Code Online (Sandbox Code Playgroud)
如何屏蔽时间戳的前 32 个字母以防止匹配?
你可以使用这个grep:
grep -E '^.{32,}04:26' file
2022-12-23T04:26:47.748412+00:00 raspberrypi dnsmasq-dhcp[698]: DHCPREQUEST(eth0) 192.168.42.17 04:c8:07:23:04:26
Run Code Online (Sandbox Code Playgroud)
分解:
^: 开始.{32,}:匹配32个或更多字符04:26: 匹配04:26grep或者你也可以使用这个:
grep ' .*04:26' file
Run Code Online (Sandbox Code Playgroud)
考虑到您想要忽略每行第一个空格之前的时间戳文本。
解决方案awk:
awk '$NF ~ /04:26/' file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |