我收到预先指定的字符串列表。在许多文本文件(下面的示例)中,我想搜索不以列表中的字符串之一开头的字符串。有时,文本文件中会出现空白链接 - 我的代码找到它们,但我也不想要它们。
到目前为止我的脚本:
# The list of strings I receive
ENTRY_LIST="ACK AFF AUTH CON DIS EDITOR FUND JEL MISC PHD REF SEM TITLE VIS"
# I transform blanks to | in order to use egrep on in
TRANSFORMED_ENTRY_LIST=${ENTRY_LIST// /\|}
egrep -rvn ^"($TRANSFORMED_ENTRY_LIST):"
示例数据如下:
TITLE: xxxx
AUTH: yyy
FUND: ZZZ
TITLE: BERLIN
AUTH: STUTTGART
AFF: WIEN
ACK: KIEL
CNO: HAMBURG
SEM: BRESLAU
FUND: DANZIG
该行CNO: HAMBURG
是错误的,但我的代码还显示了第 4 行。
答案1
只需添加|^$
到正则表达式的末尾:
egrep -rvn "^($TRANSFORMED_ENTRY_LIST):|^\$"
这将拒绝输入中的空行。