Bash Разделить на файлы построчно

У меня есть огромный файл .txt с несколькими строками, но есть строка в строке, которая отделяет количество строк друг от друга

Я хочу использовать эту строку для разделения на многочисленные файлы с именем текущей строки.

Пример конкретной строки:

Found matches in (anything can be here): 

Пример данных в огромном .txt:

  Found matches in (anything can be here): .............. .............. .............. .............. .............. .............. Found matches in EXAMPLE: .............. .............. .............. .............. .............. .............. 

Желаемый вывод:

  Found matches in (anything can be here).txt < contains data below its self but before another line stating " Found matches in Found matches in EXAMPLE.txt < contains data below its self but before another line stating " Found matches in 

Также возможно, что могут быть повторяющиеся строки «Найдено совпадений в (что угодно)) с данными, так что вместо перезаписи текущего можно переименовать (1) и (2) и (3) и т. Д. Или просто ДОБАВИТЬ тоже текущий файл (не перезаписать)

2 Solutions collect form web for “Bash Разделить на файлы построчно”

Как далеко будет

 awk '/^ *Found matches/ {FN = $0 ".txt"; next} {print >> FN}' file 

получить тебя?

РЕДАКТИРОВАТЬ: исправленная версия («Найдено совпадений» НЕ в первой строке):

 awk '/^ *Found matches/ {if (FN) close (FN); FN = $0 ".txt"; next} FN {print >> FN}' file 

Честно говоря, я новичок в Bash, я даже не знаю, с чего начать, извините, я знаю, что это место для обучения, но любое направление поможет

Вы не должны извиняться за то, что не знали. Никто не рождается опытным в написании сценариев.

Однако, поскольку ваш вопрос стоит прямо сейчас, это не столько просьба о помощи, сколько «пожалуйста, напишите мне сценарий, который решает X и Y».

Эти вопросы, как правило, осуждаются этим (и большинством других) сообществ GNU / Linux.

Но вернемся к проблеме под рукой. Дело в том, что вы даже не знаете с чего начать. Вот как я начал несколько лет назад:

  • Я прочитал это руководство (и сделал все упражнения)
  • Затем я прочитал это руководство (и сделал все упражнения)
  • Я купил эту книгу . Прочитайте это, и сделал большинство упражнений
  • Я связался с сообществом (сначала как наблюдатель)

Хотя самый важный и полезный шаг, который я предпринял, состоял в том, что я использовал GNU / Linux для всего . Имея в виду; GNU / Linux стала моей единственной операционной системой, что заставляло меня решать любую проблему, с которой я сталкивался, используя свои навыки или заставляя меня изучать новые навыки *. Столкнувшись с последним, я часто обращался к сообществу за помощью, которая также научила меня (я надеюсь!) Формулировать хорошие вопросы.

Одна из многих замечательных особенностей GNU / Linux заключается в том, что никакая «красная лента» не останавливает вас в виде лицензирования и / или высокой стоимости программного обеспечения. Вы можете возиться с любым распространением по вашему выбору. Сделайте это, и вы станете достаточно опытным, чтобы решить не только проблему, поставленную в вашем вопросе, но и многие другие.

Теперь я полностью осознаю, что мой маршрут может подходить не всем. Конечно, вы должны выбрать тот путь к обучению, который вам больше подходит.

Наконец, я искренне надеюсь, что это не звучит снисходительно, мое намерение является полной противоположностью; чтобы заинтересовать вас и погрузиться в удивительно увлекательный мир GNU / Linux.

Счастливого взлома!


* Для вас там, молодежь; взломать Xorg, и заставить работать аудио и WiFi было не просто прогулкой по парку с использованием GNU / Linux около десяти лет назад (и не заводите меня по Bluetooth!)

  • Как переформатировать блоки зоны named.conf в одну строку?
  • искать шаблон и всегда печатать первую строку, содержащую cn
  • Как я извлекаю пути к файлам из текстового файла?
  • Что возвращает cut, если указанное поле не существует?
  • Подберите patternA и напечатайте его только тогда, когда сопоставляется patternB, включая следующую строку
  • Как получить последние три последние даты файла журнала?
  • Удалить строковый файл после пробела
  • Объединить несколько строк в строку со специальными символами
  • переменная alter awk, основанная на совпадении внутри awk
  • Заменить строку перед определенной строкой
  • Извлечь .json из текстового файла с произвольным текстом
  • Linux и Unix - лучшая ОС в мире.