2014-11-05 101 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

相關問題