Чтение двух столбцов в двух файлах и вывод их в другой файл - PullRequest
0 голосов
/ 03 июля 2018

Я недавно разместил этот вопрос - paste -d " " команда, выводящая файл, отделенный от возврата

Однако я обеспокоен тем, что в текстовых файлах происходит форматирование, приводящее к ошибке. По этой причине я пытаюсь сделать это с awk.

Я не очень опытен с awk, но в настоящее время у меня есть следующее:

 awk {print $1} file1 | {print $1} file2 > file 3

Это тот тип синтаксиса, который я должен использовать? Выдает ошибку, в которой говорится, что отсутствует } Каждый файл содержит один столбец чисел и одинаковое количество строк.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

awk на помощь:

awk 'FNR==NR{a[FNR]=$1;next}{print a[FNR],$1}' a.txt b.txt > output.txt

a.txt:

1
2
3
4
5

b.txt:

A
B
C
D
E

output.txt:

1 A
2 B
3 C
4 D
5 E
0 голосов
/ 03 июля 2018

Видя, что ваш старый пост кажется, вы можете иметь в своих файлах контрольные символы. Чтобы удалить управляющие символы M в ваших файлах, используйте утилиту dos2unix или используйте следующие команды.

1-й: удалить повсюду ненужные символы.

tr -d '\r' < Input_file > temp_file && mv temp_file Input_file

2nd: чтобы удалить их только в последней строке, используйте следующее.

awk '{sub(/\r$/,"")} 1' Input_file > temp_file && mv temp_file Input_file

Полагаю, что после удаления ненужных символов ваша команда paste также должна работать правильно. Выполните следующее после того, как вы исправите контрольные символы M в своих файлах Input_file.

paste -d " " Input_file1  Input_file2 > Output_file

ИЛИ для объединения 2 файлов просто используйте: (учитывая, что ваши Input_files имеют либо 1 столбец, либо вы хотите, чтобы в выводе были полные строки)

cat Input_file1 Input_file2 > output_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...