2014-10-02 6 views
3

У меня есть два файла:Сравните каждую строку одного файла с каждой строкой другого файла

file1

cat file1 
A,1 
B,2 
C,2 
D,3 

file2

cat file2 
A 
A 
A 
B 
B 
C 
C 
D 

Желаемая выходные

cat output 
A,A,1 
A,A,1 
A,A,1 
B,B,2 
B,B,2 
C,C,2 
C,C,2 
D,D,3 

Как вы можете видеть, каждая строка file1 следует сопоставлять с каждой строкой file2, и если они совпадают, то строка с file1 должна быть добавлена ​​к соответствующей строке в file2. Я пробовал join, но он не работает. Я предполагаю, что поиск должен быть рекурсивным, но я не уверен, как это сделать, когда задействованы два файла.

Любая помощь была бы принята с благодарностью.

Благодаря

ответ

2

Использование awk:

awk -F, -v OFS=, 'FNR==NR {a[$1]=$0;next} $1 in a{print $1, a[$1]}' file1 file2 
A,A,1 
A,A,1 
A,A,1 
B,B,2 
B,B,2 
C,C,2 
C,C,2 
D,D,3 
+0

спасибо, что работает отлично. – rohit

+0

Добро пожаловать, рад, что все получилось. – anubhava

2
join -t',' -o'1.1,2.1,2.2' file2 file1 

эта линия делает это.

Смежные вопросы