如何在单个代码行中包含多个搜索字符串

时间:2019-07-17 13:39:24

标签: unix

我有一个代码,该代码搜索文件中的IN字符串,然后将这些记录放入下面我正在使用的其他文件中:

cat ${ALL_CARDS} | grep -v ' IN ' | awk '{print $1}' > ${NO_EXEC_CARDS}

但是现在我必须包括多个搜索字符串以及像NE&ON这样的IN,因此如何在代码行中也包含这些搜索字符串

1 个答案:

答案 0 :(得分:1)

cat | grep | awk是反模式。另外,仅使用awk就可以使您的问题变得微不足道:

awk '! /IN/ && ! /ON/ && ! /NE/ {print $1}' "$ALL_CARDS" > "$NO_EXEC_CARDS"

您的grep中还有一些空白,所以也许您想要:

awk '! / IN / && ! / ON / && ! / NE / {print $1}'

awk正是为此而设计的。它仅读取每一行,如果表达式与“ IN”或“ ON”或“ NE”不匹配,则执行该动作。您也可以这样写:

awk '! (/ IN / || / ON / || / NE /) {print $1}'