egrep 用于指定字符串和换行符

egrep 用于指定字符串和换行符

我收到预先指定的字符串列表。在许多文本文件(下面的示例)中,我想搜索不以列表中的字符串之一开头的字符串。有时,文本文件中会出现空白链接 - 我的代码找到它们,但我也不想要它们。

到目前为止我的脚本:

# 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):|^\$"

这将拒绝输入中的空行。

相关内容