Объединить столбцы из разных файлов - PullRequest
5 голосов
/ 06 декабря 2011

У меня есть два текстовых файла со следующими структурами:

Файл 1

Column1:Column2
Column1:Column2
...

Файл 2

Column3
Column3
...

Я хотел бы создать файл с такой структурой:

Column1:Column3
Column1:Column3
...

Открыт для любых предложений, но было бы неплохо, если бы решение можно было сделать из оболочки Bash или sed / awk/ perl / и т. д. ...

Ответы [ 3 ]

11 голосов
/ 06 декабря 2011
cut -d: -f1 "File 1" | paste -d: - "File 2"

Это вырезает поле 1 из файла 1 (разделенного двоеточием) и вставляет его с единственным столбцом в файле 2, разделяя поля вывода двоеточием.

4 голосов
/ 06 декабря 2011

Вот решение awk. Предполагается, что file1 и file2 имеют одинаковое количество строк.

awk -F : '{ printf "%s:",$1; getline < "file2"; print }' < file1
2 голосов
/ 06 декабря 2011

Поскольку чистая реализация bash не была предложена, также предполагалось равное количество строк (только bash v4):

mapfile -t file2 < file2

index=0
while IFS=: read -r column1 _; do
        echo "$column1:${file2[index]}"
        ((index++))
done < file1

bash v3:

IFS=$'\n' read -r -d '' file2 < file2

index=0
while IFS=: read -r column1 _; do
        echo "$column1:${file2[index]}"
        ((index++))
done < file1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...