Grepを使用して同じ行で2つの単語を検索する

Grepを使用して同じ行で2つの単語を検索する

同じ行にある2つの単語を見つけるためにgrep(またはegrep)を使用したいと思います。オンタリオと月曜日

Flight#   Airline  Depart  Arrive  Day
------------------------------------------
93104      TEAM     ONT     LAX   MONDAY
62876       GE      NYC     ONT  THURSDAY
30118      LOGI     ONT     PHX   FRIDAY
12033       F       LAX     PHX   MONDAY
40990      ACTI     PHX     ONT   MONDAY
92377       EA      ONT     PHX   SUNDAY

さまざまなコマンドを試しましたが、フライト#93104を含む行の代わりにMONDAYまたはONTを含むすべての行が返されます。

答え1

可能:

grep "ONT.*MONDAY" file

答え2

ONT3番目の列でその単語を見つけることができ、MONDAY5番目の列でその単語を見つけることができることを知っている場合:

$ awk '$3 == "ONT" && $5 == "MONDAY"' file
93104      TEAM     ONT     LAX   MONDAY

これは、空白を含まない列の値によって異なります。上記のコマンドは、awk目的の単語を文字列で比較して3列と5列の値をテストし、テストに合格したすべての行を出力します。

ONT3番目または4番目の列とMONDAY5番目の列を一致させるには、次の手順を実行します。

$ awk '($3 == "ONT" || $4 == "ONT") && $5 == "MONDAY"' file
93104      TEAM     ONT     LAX   MONDAY
40990      ACTI     PHX     ONT   MONDAY

を使用した場合、grep2つの単語が一致していることを確認できません。完全な言葉または正しい列(正規表現をあまり複雑にしない限り)

関連情報