如何使用第一列grep匹配字符串?

Sin*_*n15 2 grep awk text-processing

我试图只获取匹配的字符串(match_E2pattern_2)以及第一列。

abcd.corp;;a123,Virtual,aws,Linux,Linux,match_E2,Database
web1.corp;;,Virtual,azure,match_E2,Linux,corpo,Database
web2.corp;;match_E2,Virtual,a2responsible,Linux_Suse,Linux,corpo,Database
web3.corp;;Virtual,Virtual,corpo,pattern_2,Linux,corpo,Database
web4.corp;;Virtual,Virtual,corpo,,Linux,pattern_2,Database
Run Code Online (Sandbox Code Playgroud)

预期产出可能低于

abcd.corp,match_E2
web1.corp,match_E2
web2.corp,match_E2
web3.corp,pattern_2
web4.corp,pattern_2
Run Code Online (Sandbox Code Playgroud)

我尝试使用 option -oingrep但它只提供匹配的字符串。

LL3*_*LL3 5

我敢说你的案子可能会更好地处理sed

对于match_E2图案:

$ sed -nE 's/^([^;]+).*(match_E2).*/\1,\2/p' file.txt
Run Code Online (Sandbox Code Playgroud)

对于pattern_2图案:

$ sed -nE 's/^([^;]+).*(pattern_2).*/\1,\2/p' file.txt
Run Code Online (Sandbox Code Playgroud)

一口气完成这两种模式:

$ sed -nE 's/^([^;]+).*(match_E2|pattern_2).*/\1,\2/p' file.txt
Run Code Online (Sandbox Code Playgroud)

也就是说,基本上:

$ sed -nE 's/^([^;]+).*(    ).*/\1,\2/p' file.txt
#                       ^  ^
#                       |  |
#            ---------------------
# put within these two parentheses the same (Extended Regular Expression) pattern you would use with `grep -E`
Run Code Online (Sandbox Code Playgroud)

请注意,它仅依赖于至少一个;作为第一个字段和行的其余部分之间的分隔符。