最初の列に一致する文字列を見つけるにはどうすればよいですか?

最初の列に一致する文字列を見つけるにはどうすればよいですか?

match_E2一致する文字列(sum 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

期待される出力は、以下より低い場合があります。

abcd.corp,match_E2
web1.corp,match_E2
web2.corp,match_E2
web3.corp,pattern_2
web4.corp,pattern_2

-oオプションを試しましたが、grep一致する文字列のみを提供します。

ベストアンサー1

あえて言えば、あなたの出来事はよりうまくいくでしょうsed

パターンの場合match_E2

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

パターンの場合pattern_2

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

2つのモードを同時に使用するには:

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

つまり、基本的には次のようになります。

$ 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`

;最初のフィールドと残りの行の間の区切り文字の1つ以上にのみ依存することに注意してください。

おすすめ記事