Объединить строки, соответствующие регулярному выражению из другого файла - PullRequest
2 голосов
/ 28 марта 2012

Я пытаюсь сделать следующее, но мне пока не удалось.У меня есть два файла:

header1
data11
data12
data13
header2
data21
data22
data23
header3
data31
data32
data33
header4
data41
data42
data43
...
headerN
dataN1
dataN2
dataN3

, а другой -

header1 num11 num12 num13 num14
header2 num21 num22 num23 num24
header5 num51 num52 num53 num54
header8 num81 num82 num83 num84
...

В качестве выходного файла мне нужно иметь файл, который выбирает заголовок из файла 2 и печатает в следующем формате (используя приведенный выше пример)

header1
data11
num11
num13
data12
data13
header2
data21
num21
num23
data22
data23
header5
data51
num51
num53
data52
data53
...

Надеюсь, это понятно: мне нужен заголовок (который должен быть идентифицирован как общий для двух файлов), первая строка файла 1, второй и четвертый столбецфайл 2, остальные данные файла 1 для этого заголовка и т. д.Я пытался с awk, но я не смог получить то, что я хочу, от простого "двухфайловой однострочной":)

РЕДАКТИРОВАТЬ: Извините за ввод в заблуждение.Я не требую однострочника.Я просто говорю, что использовал несколько awk и grep one-liners.Я хотел бы что-то, что работает только :) Кроме того, заголовки являются буквенно-цифровыми, без простого шаблона.Мне нужно признание всей строки.

1 Ответ

3 голосов
/ 28 марта 2012

Это один уродливый лайнер, который я придумал (разработан в командной строке):

while read h n1 n2 n3 n4; do echo $h; sed -n -e "/^$h\$/{" -e n -e p -e q -e '}'  file1 ; echo $n1; echo $n3; sed -n -e "/^$h\$/{" -e n -e n -e p -e n -e p -e q -e '}'  file1 ;  done <file2

Я предполагаю, что для каждого заголовка в file2 есть соответствующий заголовок в file1

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