我希望使用 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
我尝试了各种命令,但返回的是包含 MONDAY 或 ONT 的每一行,而不是包含航班 #93104 的行
答案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
,您将无法确定这两个词是否匹配完整的单词或在正确的列(除非您使正则表达式过于复杂)。