![在空格前搜索单词](https://linux22.com/image/689732/%E5%9C%A8%E7%A9%BA%E6%A0%BC%E5%89%8D%E6%90%9C%E7%B4%A2%E5%8D%95%E8%AF%8D.png)
我有一个包含一些电子邮件的文件:
[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.