2016-02-25 2 views
0

Я пытаюсь сравнить 2 таблицы и извлекать матчи на основе двух столбцов:Извлечение строки сравнивающие столбцы из двух файлов

файл 1

0.736 5 100 T 
0.723 1 15 T 
0.792 6 100 T 
0.634 3 100 T 
0.754 7 100 T 
0.708 2 100 T 
0.722 9 100 T 
0.542 1 6 T 

Файл 2

0.736 5 
0.634 3 
0.542 1 

выход

0.736 5 100 T 
0.634 3 100 T 
0.542 1 6 T 

Когда я пытаюсь использовать этот код, он говорит мне, что awk не найден, что не имеет смысла, потому что я регулярно пользуюсь awk .. Не могли бы вы помочь мне обнаружить ошибку здесь, пожалуйста?

awk 'FNR==NR{a[$1,$2]=$0;next}{if(b=a[$1,$2]){print b}}' file1 file2> output 
+0

копировать/вставить полное, реальное сообщение об ошибке вы получаете в ваш вопрос. Попробуйте 'awk 'BEGIN {print" hi "; exit}'' - это дает вам такую ​​же ошибку? Что скажет вам 'какой awk' (или' where awk' или 'whence awk' или какой-нибудь другой инструмент, который вы использовали для поиска команды в вашей PATH)? –

+0

Его простая ошибка '-bash: awk: command not found'. Да, код, который вы мне дали, работает нормально. Каждый раз, когда я использую awk, он работает просто отлично, за исключением этого кода hah – Ale

+0

странным, я просто без проблем запускал ваш 'awk' в моей системе' ubuntu 14.04'. 'GNU awk 4.0.1' – Chris

ответ

0

можно использовать grep

grep -f file2 file1 

или awk

awk 'NR==FNR{A[$1];next}$1 in A' file2 file1 

Надеется, что это помогает :)

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