Добавьте указанную c строку в конце каждой строки - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть основной файл с 4 столбцами, например:

a b c d
e f g h
i j k l

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

a b c d x
e f g h y
i j k l z

Возможно ли это в bash? Я могу добавить только одну строку в конец каждой строки.

Ответы [ 4 ]

3 голосов
/ 06 апреля 2020

Можно сделать двумя способами

1) paste file1 file2

2) Перебирать оба файла, построчно объединять и записывать в новый файл

1 голос
/ 07 апреля 2020

Это может сработать для вас (GNU sed):

sed -E 's#(^.*) .*#/^\1/s/$/ &/#' file2 | sed -f - file1

Создайте сценарий sed из файла file2, который использует регулярное выражение для сопоставления строки в file1, и если он добавляет содержимое этой строки в file2 к согласованной строке.

NBЭто не зависит от порядка и длины файла1.

1 голос
/ 06 апреля 2020

Вы можете использовать GNU для этого параллельно:

fe-laptop-m:test fe$ cat first 
a b c d
e f g h
i j k l
fe-laptop-m:test fe$ cat second 
x
y
z
fe-laptop-m:test fe$ parallel echo  ::::+ first second 
a b c d x
e f g h y
i j k l z

Правильно ли я понимаю, что вы пытаетесь достичь?

0 голосов
/ 07 апреля 2020

Вы можете попробовать использовать pr

pr -mts' ' file1 file2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...