Не удается разделить текстовый файл на основе разделителя - PullRequest
0 голосов
/ 07 февраля 2020

Я использую Ubuntu 18.04 LTS. У меня есть текстовый файл с именем «group_keys», который содержит несколько ключей publi c, которые я хотел бы разделить на основе разделителя

-----BEGIN PUBLIC KEY-----

, а затем вывести каждый ключ по отдельности и последовательно. Например, если есть три ключа, то на выходе будут три файла с именами, такими как «person_1_key», «person_2_key» и «person_3_key».

Файл выглядит следующим образом: enter image description here

Мне трудно использовать split и csplit для этого. Команды, которые я ввожу, не работают. Вот что я пробовал:

Использование split:

split --separator="-----BEGIN PUBLIC KEY-----" group_keys

Это ничего не выводит, а вместо этого дает мне сообщение

split: multi-character separator ‘-----BEGIN PUBLIC KEY-----’

Использование csplit:

csplit group_keys "-----BEGIN PUBLIC KEY-----"

Это дает мне только два файла, "xx00" и "xx01", но это не разбивает строки. «xx00» полностью пуст, а «xx01» - просто исходный файл.

Ответы [ 2 ]

3 голосов
/ 07 февраля 2020

Попробуйте

csplit -z -f person_ -b '%d_key' group_keys '/-----BEGIN PUBLIC KEY-----/' '{*}'

, что приведет к выводу четырех файлов person_0_key, person_1_key, person_2_key, person_3_key, где

  • -z подавляет генерацию пустые файлы
  • -f person_ устанавливает префикс выходного имени файла
  • -b '%d_key' устанавливает суффикс выходного имени файла
  • '{*}' устанавливает количество повторений (повторение столько раз, сколько возможно )
3 голосов
/ 07 февраля 2020

Это должно работать:

awk '/-----BEGIN PUBLIC KEY-----?/{n++}{print > "person_" n "_key" }' group_keys

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