![egrep 用于指定字符串和换行符](https://linux22.com/image/60617/egrep%20%E7%94%A8%E4%BA%8E%E6%8C%87%E5%AE%9A%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%92%8C%E6%8D%A2%E8%A1%8C%E7%AC%A6.png)
我收到预先指定的字符串列表。在许多文本文件(下面的示例)中,我想搜索不以列表中的字符串之一开头的字符串。有时,文本文件中会出现空白链接 - 我的代码找到它们,但我也不想要它们。
到目前为止我的脚本:
# 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):|^\$"
这将拒绝输入中的空行。