У меня есть два файла данных с разделителями табуляции, на которых file1 выглядит так:
cluster_j_72 cluster-32 cluster-32 cluster_j_72
cluster_j_75 cluster-33 cluster-33 cluster_j_73
cluster_j_8 cluster-68 cluster-68 cluster_j_8
файл2 выглядит так:
NODE_148 67545 97045 cluster-32
NODE_221 1 42205 cluster-33
NODE_168 1 24506 cluster-68
Я хотел бы подтвердить, что для данной строки в file1 столбцы 2 и 3; а также 1 и 4 идентичны. Если это так, то я хотел бы взять значение для этой строки из столбца 2 (файл 1), найти его в файле 2 и заменить его значением из столбца 1 (файл 1). Таким образом, новый вывод файла 2 будет выглядеть следующим образом (обратите внимание, что столбцы 1 и 4 не соответствуют кластеру 33 (файл1), шаблон не заменяется в файле 2):
NODE_148 67545 97045 cluster_j_72
NODE_221 1 42205 cluster-33
NODE_168 1 24506 cluster_j_8
Мне удалось исправить непредвиденные обстоятельства (здесь выводится значение из файла file1, которое я хотел бы использовать для замены значения в файле file2):
awk '{if($2==$3 && $1==$4){print $1}}'file1
Если бы я мог получить sed для извлечения значений ($ 2 и $ 1) из file1 при поиске в файле 2, это сработало бы:
sed 's/$2(from file1)/$1(from file1)/' file2
Но мне кажется, что я не могу вложить этот sed в предыдущем выражении awk и не получить sed для поиска шаблона, созданного в другом файле, а не в нем.
спасибо!