我有一个代码,该代码搜索文件中的IN字符串,然后将这些记录放入下面我正在使用的其他文件中:
cat ${ALL_CARDS} | grep -v ' IN ' | awk '{print $1}' > ${NO_EXEC_CARDS}
但是现在我必须包括多个搜索字符串以及像NE&ON这样的IN,因此如何在代码行中也包含这些搜索字符串
答案 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}'