Найдите общие элементы в данном столбце из двух файлов и произведите значения столбцов из каждого файла

Я экранирован относительно того, почему Вам было бы нужно один, но PuTTY идет с клиентом Linux. Это - открытый исходный код, существует в репозиториях Debian, и поскольку добавленная премия говорит SSH также.

3
08.03.2018, 04:16
3 ответа

GNU coreutils включает команду join это делает точно, что Вы хотите, если сортировка строки в результате не важна:

join <(sort file1) <(sort file2)

A 1 9
B 3 3
C 1 2

Если Вы хотите вкладки назад, сделайте:

join <(sort file1) <(sort file2) | tr ' ' '\t'

A   1   9
B   3   3
C   1   2

Или используйте t опция к join.

(<() иначе замена процесса, требует ksh93 (где функция, порожденная в), удар или zsh),

10
27.01.2020, 21:08
  • 1
    Теперь вывод отсортирован в алфавитном порядке, вместо согласно file2, но не было ясно, будет ли это проблемой. –  Bernhard 25.10.2012, 13:52
ire@localhost: sort -k1 file2 | join file1 -
A 1 9
B 3 3
C 1 2

Если Вы хотите вкладки в выводе, то сделайте

sort -k1 file2 | join -t "        " file1 -

где можно создать вкладку в кавычках путем нажатия CTRL-V <tab>.

2
27.01.2020, 21:08

Если Вы не хотите отсортированного вывода, но вместо этого имеете тот же порядок, как file2, awk является хорошим инструментом для использования:

awk '
    NR == FNR {val[$1]=$2; next} 
    $1 in val {print $1, val[$1], $2}
' file1 file2
1
27.01.2020, 21:08

Теги

Похожие вопросы