Sin*_*n15 2 grep awk text-processing
我试图只获取匹配的字符串(match_E2和pattern_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但它只提供匹配的字符串。
我敢说你的案子可能会更好地处理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)
请注意,它仅依赖于至少一个;作为第一个字段和行的其余部分之间的分隔符。