2014-11-05 83 views
1

我正在编写一个korn shell脚本来尝试将包含用户名的一个文件与包含用户名和电子邮件的另一个文件进行比较。例子如下:使用第一个字比较两个文件并返回第二个

文件1:

user1 
user2 
user5 

文件2:

user1|email1 
user2|email2 
user3|email3 
user4|email4 
user5|email5 

反正是有,我可以只返回匹配的用户名的电子邮件给FILE3这样吗?我想我必须使用comm命令,但我不确定如何正确地处理它。

文件3:

email1 
email2 
email5 

任何帮助表示赞赏。由于

回答

2

另一种解决方案:

grep -f file_1 file_2 | cut -d '|' -f2 

但grep的并不强劲,它可以找到误报。如果你希望它是强大的,适应文件1这样的:

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

你应该威胁文件的行由行编程方式而不是。

+1

彼此的方式更安全的设置字段分隔符“|”并添加-w(确切的词匹配)grep – Ajay 2014-11-05 17:56:05

+0

感谢您的答复。但是,当我尝试使用-f运行grep时,我会将其作为非法选项使用。当我使用-w它运行两个文件并且说grep无法打开每一行。 – VarmintCong 2014-11-05 19:37:47

+0

做人grep,看看你的grep版本是否允许-f选项。 mine grep允许 grep -wf file_1 file_2 |切-d'|' -f2 – Ajay 2014-11-05 19:54:38

1

正确的解决方案似乎与join

join -t '|' file_1 file_2 | cut -d '|' -f2 
+0

我不知道为什么我会加入这里。如果我试图比较file1中的字符串和file2中的字符串,我想我需要使用comm或grep – VarmintCong 2014-11-06 17:34:43

相关问题