小编Yas*_*ary的帖子

无论顺序如何,从行中提取多个模式

我是 Unix 脚本的新手,所以请耐心等待。

我得到了一个文件,其中包含有关每行进程的信息。我需要从每一行中提取有关这些过程的某些信息。

文件示例 -

process1 port=1234 appID=dummyAppId1 authenticate=true <some more params>
process3 port=1244 authenticate=false appID=dummyAppId2 <some more params>
process2 appID=dummyAppId3 port=1235 authenticate=true <some more params>
Run Code Online (Sandbox Code Playgroud)

所需的输出是 -

1
port=1234 authenticate=true appID=dummyAppId1 
2
port=1244 authenticate=false appID=dummyAppId2
3
port=1235 authenticate=true appID=dummyAppId3
Run Code Online (Sandbox Code Playgroud)

每行的数字 1、2 和 3 仅表示输出文件的行号。

我已经尝试使用该sed s/命令,但它是特定于顺序的,而输入文件中的参数不遵循顺序 - 因此,输入文件中的某些行被跳过。

这是我的命令-

sed -nr 'appId/s/(\w+).*port=([^ ]+) .*authenticate=[^ ]+) .*appId=[^ ]+) .*/\2\t\3\t\4/p' | sed =
Run Code Online (Sandbox Code Playgroud)

任何人都可以指导我如何不考虑顺序提取这些参数吗?

谢谢!

编辑 1:我设法以这种方式使用 grep 的后视零宽度断言功能 -

grep -Po '(?<=pattern1=)[^ ,]+|(?<=pattern2=)[^ ,]+|(?<=pattern3=)[^ ,]+|(?<=pattern4=)[^ ,]+' filename …
Run Code Online (Sandbox Code Playgroud)

grep sed awk

3
推荐指数
2
解决办法
452
查看次数

标签 统计

awk ×1

grep ×1

sed ×1