在空格前搜索单词

在空格前搜索单词

我有一个包含一些电子邮件的文件:

[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]

现在......我需要找到一种方法来从左侧列表(空格之前)搜索特定的电子邮件地址,我已经尝试使用 grep/sed 来搜索它,但通常当我搜索单词“info”时,我会得到两个结果[电子邮件保护][电子邮件保护]...

我怎样才能告诉 Linux 只检查空格之前的字符串?

谢谢。

答案1

采取以下数据集:

# cat mailaddresses.txt
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]

使用 awk 获取第一列:

# awk '{print $1;}' mailaddresses.txt
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

要获取所有信息@,您只需将输出通过管道传输到 grep 即可:

# awk '{print $1;}' mailaddresses.txt | grep '^info@'
[email protected]

如果您想要所有包含 @ 之前信息的电子邮件:

# awk '{print $1;}' mailaddresses.txt | egrep '^.*info.*@'
[email protected]
[email protected]
[email protected]

答案2

例如

grep ' info@' file与第二列上的匹配。

egrep '^info@' file与第一列的匹配。

只需将匹配字符串放在引号之间,这样 bash 就会将整个字符串作为参数执行 grep,而不是将它们解析为不同的参数。

答案3

grep 'info@.* ' 文件应该可以解决这个问题,而且很丑陋,awk '{print $1}' 文件 | grep 'info@'

J.

相关内容