Как построчно объединить два вывода команд? [дубликат]

Никогда не следует полагаться на / dev / sd * для согласованности при перезагрузках, гибернации и т. Д. Буквы назначаются в любом порядке, в котором запущены модули ядра или программное обеспечение пользовательского пространства, и нет никакой гарантии уважение к этому порядку.

Однако udev уже создает различные виды символических ссылок в / dev / disk / , которые начинаются с by- . Эти символические ссылки остаются неизменными.

Очевидно, не все они обновляются во время пробуждения, но, по крайней мере, / dev / disk / by-id обновляются. Кроме того, установка по-прежнему недействительна после пробуждения, но повторная установка решает проблему.

1
26.07.2016, 02:56
3 ответа

Мне нравится использовать вставьте команду .

paste -d. file1 - - file2 < /dev/null

производит желаемый результат

file1_a...file2_a
file1_b...file2_b
file1_c...file2_c
file1_d...file2_d  

- относится к стандартному вводу, мы используем его дважды, чтобы утроить наши точки используется, потому что нам не нужно ничего между этими точками.

4
27.01.2020, 23:19

Это ответ @zacharybrady, но он больше похож на то, что вы просили. Это касается входных процессов. Это, я думаю, вы расширите.

paste -d. <(cat file1) - - <(cat file2) < /dev/null

Спасибо @zacharybrady за ту часть, на которой я застрял. Я дошел до этого join <(cat -n file1) <(cat -n file2) | cut -d" " -f2-, так как забыл про paste. Однако я не смог правильно указать разделитель полей.

Примечание: я обнаружил, что paste не совместим с utf-8. Он обрабатывает только первый байт после -d, поэтому -d... не работает. (Я использую debian jessie, paste (GNU coreutils) 8.23)

0
27.01.2020, 23:19

Если вы вставите два файла, они будут разделены табулятором. Поэтому просто замените табулятор на нужный вам разделитель:

$ paste file1 file2 | sed -e 's/\t/.../'

Если в вашем содержимом есть табулятор, придумайте новый разделитель, который не встречается, как %:

$ paste -d% file1 file2 | sed -e s/%/.../
1
27.01.2020, 23:19

Теги

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