Как извлечь определенную c часть файла, разделенную несколькими строками звездочек? - PullRequest
2 голосов
/ 03 мая 2020

Я пытаюсь извлечь различные части текста из файла, разделенного несколькими строками * символов. Содержимое файла выглядит следующим образом:

**************************
**************************
abc123
abc1234
**************************
**************************
123abc
**************************
12ab34
**************************
**************************
12345
**************************
**************************
6789
abcd
1234
**************************
**************************

Каким образом можно извлечь, например, пятую часть файла?
Пятая часть содержит следующие строки:

6789
abcd
1234

Я пытался использовать grep:

grep -E -v '([^\*]*\*)' filename

Вывод команды:

abc123
abc1234
123abc
12ab34
12345
6789
abcd
1234

1 Ответ

1 голос
/ 03 мая 2020

РЕДАКТИРОВАТЬ: Добавление здесь еще одного универсального c решения.

awk '/^\*+/{if(prev!~/^\*/){count++}} count==5 && !/^\*/;{prev=$0}' Input_file


Не могли бы вы попробовать следующее, написанное и протестировано с GNU awk и показаны только образцы.

awk -v FS="*+" -v RS="^$" '{gsub(/^\n+|\n+$/,"",$10);print $10}' Input_file

2-е решение: Более универсальное c решение.

awk '/^\*/{count++} count==9 && $0!~/^\*/' Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...