我的文件内容为
0::chkconfig --list autofs::
autofs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
1::grep "^PROMPT=" /etc/sysconfig/init::
PROMPT=yes
2::rpm -q prelink::
prelink-0.4.0-2.el5
3::sysctl fs.suid_dumpable::
fs.suid_dumpable = 0
4::stat /etc/motd::
File: `/etc/motd'
Size: 17 Blocks: 16 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 10125343 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-04-08 07:54:03.000000000 +0500
Modify: 2019-03-30 19:22:13.000000000 +0500
Change: 2019-03-30 19:22:13.000000000 +0500
5::stat /etc/issue::
File: `/etc/issue'
Size: 52 Blocks: 16 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 10125494 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-03-30 19:12:13.000000000 +0500
Modify: 2012-02-25 22:01:14.000000000 +0500
Change: 2019-03-30 23:54:57.000000000 +0500
我希望第一场比赛能在everything
之间抓住我
:: <everything>\d::
注意: ::后跟\ n新行(想先跳过::)
regex的\ d可以是3位999(最大)。
第二个匹配项是在第一个匹配项中搜索
例如5::
Access: (0644/-rw-r--r--)
获取权限0644
第二个匹配规则的标准不是固定的,并且会根据要求进行更改,但是第一个匹配规则是相同的。
最终匹配的输出只是匹配的字符串,而不是整个记录或结果。
到目前为止,我已经尝试过
cat org_op.2019.04.08-12.49.38 | awk 'f{print;f=0} /^3::/{f=1}'
这会给我
` fs.suid_dumpable = 0`
但不能缩放为多行匹配,只能在匹配下方提供1行
我也在尝试使用awk -F [::,\d""]
,但是我没有在括号之间得到\ d正则表达式匹配。
最终输出
4::stat /etc/motd::
File: `/etc/motd'
Size: 17 Blocks: 16 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 10125343 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-04-08 07:54:03.000000000 +0500
Modify: 2019-03-30 19:22:13.000000000 +0500
Change: 2019-03-30 19:22:13.000000000 +0500
条件#1 用户要输入哪个块,例如开始标记\ d ::,其中'\ d'是用户提供的,并且它将在上述新块开始之前结束。
条件#2 参见
fd00h/64768d
,但是此条件将被更改,并且对于变量匹配的每个块都是唯一的,我希望可以根据这种格式要求来增加awk。
注意:从用户提供的信息中,我的意思是将其作为变量提供,例如$ var
测试
cat org_op.2019.04.08-12.49.38 | awk -v id=4 -v RS= -F ':' '($1==id) && $17~/\(([0-9]+)\// { print $17}'
(0644/-rw-r--r--) Uid
实际上,我希望此正则表达式匹配/\([0-9][0-9][0-9][0-9]\//)
0644
答案 0 :(得分:0)
这就是您要尝试的全部吗?
Task.Delay