Извините заранее, если это слишком элементарно, я новичок. У меня есть два файла (файл1 и файл2). Я хочу посмотреть в file1 столбец 6 и, если он совпадает с записью в столбце 1 файла 2, вывести содержимое этой строки в конец файла 1, чтобы создать новый файл. Ниже показано, как выглядят мои файлы, и как они мне нравятся. Я попробовал ниже, и это не работает, вывод пуст.

sort -k6 file 1 > file1_sorted

sort –k1 file2 > file2_sorted

join -1 6 -2 1 -o 1.1,1.2,1.3,1.4,1.5,1.6,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,2.10,2.11,2.12,2.13 file1_sorted file2_sorted > file3

Это может быть связано с неправильным объединением или с неправильной сортировкой файла 1, или с тем и другим. Оба файла csv, файл 2 в порядке, но в файле 1, похоже, есть несколько пустых пробелов после последнего столбца, и когда я пытаюсь выбрать столбец 6 файла1 с помощью awk '{print $6} file 1 >test , он не работает …Я не имею понятия почему. Я попытался удалить вкладки, используя sed и т.д., Но не повезло Пожалуйста помоги!

Файл 1 (5052 строки, 6 столбцов)

rs28595482,1,1,1953576,ENSG00000187730,GABRD
rs2376805,1,1,1956362,ENSG00000187730,GABRD
rs2229110,1,1,1957037,ENSG00000187730,GABRD
rs3820007,1,1,1957299,ENSG00000187730,GABRD
rs28409373,1,1,1959978,ENSG00000187730,GABRD
rs2376803,1,1,1967954,NA,GABRD
rs11582799,1,1,7832026,ENSG00000269925,VAMP3

файл 2 (344 строки, 13 столбцов)

GABRD,16,0,0,gaba,0,0,oxt,0,0,0,0,0
ABCG1,21,0,0,0,0,cort,0,0,0,0,0,0
VAMP3,0,0,0,0,0,0,0,0,0,0,0,0
ADAMTS2,0,0,0,0,0,0,0,0,0,0,0,0
ADAMTSL1,9,0,0,0,0,0,oxt,0,0,0,0,rest
ADCY7,16,0,0,0,0,cort,0,0,0,0,0,0

Что я ожидаю получить после некоторой магии (файл 3)

rs28595482,1,1,1953576,ENSG00000187730,GABRD,16,0,0,gaba,0,0,oxt,0,0,0,0,0
rs2376805,1,1,1956362,ENSG00000187730,GABRD,16,0,0,gaba,0,0,oxt,0,0,0,0,0
rs2229110,1,1,1957037,ENSG00000187730,GABRD,16,0,0,gaba,0,0,oxt,0,0,0,0,0
rs3820007,1,1,1957299,ENSG00000187730,GABRD,16,0,0,gaba,0,0,oxt,0,0,0,0,0
rs28409373,1,1,1959978,ENSG00000187730,GABRD,16,0,0,gaba,0,0,oxt,0,0,0,0,0
rs2376803,1,1,1967954,NA,GABRD, 16,0,0,gaba,0,0,oxt,0,0,0,0,0
rs11582799,1,1,7832026,ENSG00000269925, VAMP3,0,0,0,0,0,0,0,0,0,0,0,0

1 ответ1

0

Вы так близко. Для этого нужно указать join что использовать для входного терминатора, в этом случае -t,

join -t, -1 6 -2 1 -o 1.1,1.2,1.3,1.4,1.5,1.6,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,2.10,2.11,2.12,2.13 file1_sorted file2_sorted > file3

Кстати, хорошая работа, описывающая проблему и приводящая ваш пример. Это сделало его простым для отладки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .