从文本文件中删除不包含某些字符串的部分

时间:2021-03-28 15:09:55

标签: linux text replace formatting cut

所以我有一个文本文档,其中包含与电子邮件相关的信息。我还有一个包含电子邮件列表的邮件。

现在我想基本上检查一封电子邮件是否与文档一的字段中的一个匹配(以“====”分隔),如果它确实包含来自文档二的电子邮件,则输出/保存该特定字段(带有数据)。

例如,

文档 A:

===================
JohnDoe@gmail.com
Tall man
Black hair
Blue eyes
===================
====================
jackandjones@gmail.com
Small man
Black hair
green eyes
=====================
=====================
janedoe@gmail.com
Tall women
Ginger hair
Blue eyes
=====================

文件二:

Johndoe@gmail.com
bobdylan@gmail.com
Janedoe@gmail.com

所需的输出:

===================
JohnDoe@gmail.com
Tall man
Black hair
Blue eyes
===================
=====================
janedoe@gmail.com
Tall women
Ginger hair
Blue eyes
=====================

抱歉,如果我没有很好地解释这一点,我突然想到的是使用 cut 命令,但我无法获得所需的输出,谁能给我一点建议?

1 个答案:

答案 0 :(得分:0)

假设 GNU awk 支持多字符和 RSRT

gawk '
FNR==NR { f1[tolower($1)];next}
!(FNR%2) && tolower($2) in f1 { print RT $0 RT }
' DocumentTwo RS='[=]+' FS='\n' DocumentA

产量:

===================
JohnDoe@gmail.com
Tall man
Black hair
Blue eyes
===================
=====================
janedoe@gmail.com
Tall women
Ginger hair
Blue eyes
=====================