Связать два файла по столбцу в bash

когда у меня есть два файла, таких как файл A

012
658
458
895
235

и файл Б

1
2
3
4
5

как они могут быть объединены в bash? Выход должен быть просто

1012
2658
3458
4895
5235

на самом деле я просто хочу связать по столбцу, например, в R (cbind).


person user3419669    schedule 09.06.2014    source источник
comment
возможный дубликат объединить файл в bash по каналу   -  person    schedule 09.06.2014


Ответы (3)


Предполагая, что столбцы имеют одинаковую длину в обоих файлах, вы можете использовать команду paste:

paste --delimiters='' fileB fileA

Разделителем по умолчанию для команды вставки является TAB. Итак, '' убедитесь, что разделитель не установлен.

person P.P    schedule 09.06.2014
comment
если бы мне нужно было, чтобы они были разделены табуляцией, я мог бы просто использовать paste --delimiters='\t' fileB fileA? - person user3419669; 09.06.2014
comment
В этом случае вы можете вообще удалить разделитель: paste fileB fileA, так как \t является разделителем по умолчанию. Для разделителей пробелов: paste -d' ' fileB fileA - person P.P; 09.06.2014

Вот так, может быть:

paste -d'\0' B A

Или, если вам нравится awk:

awk 'FNR==NR{A[FNR]=$0;next} {print $0,A[FNR]}' OFS='' A B
person Mark Setchell    schedule 09.06.2014

Использование чистого Bash и никаких внешних команд:

while read -u 3 A && read -u 4 B; do
    echo "${B}${A}"
done 3< File_A.txt 4< File_B.txt
person konsolebox    schedule 09.06.2014