Grep을 사용하여 같은 줄에서 두 단어 찾기

Grep을 사용하여 같은 줄에서 두 단어 찾기

같은 줄에 있는 두 단어를 찾기 위해 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

ONT세 번째 열에서 해당 단어를 찾을 수 있고, MONDAY다섯 번째 열에서 해당 단어를 찾을 수 있다는 것을 알고 있는 경우 :

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

이는 공백이 포함되지 않은 열의 값에 따라 달라집니다. 위 명령은 awk원하는 단어를 문자열로 비교하여 3열과 5열의 값을 테스트하고 테스트를 통과한 모든 행을 출력합니다.

ONT세 번째 또는 네 번째 열과 MONDAY다섯 번째 열을 일치시키려면 다음을 수행하십시오 .

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

를 사용한 경우 grep두 단어가 일치하는지 확인할 수 없습니다.완전한 단어또는올바른 열(정규식을 너무 복잡하게 만들지 않는 한)

관련 정보