2016-02-22 2 views
2

У меня есть файл, содержащий вопросы с ответами на несколько вариантов ответа.Вывод каждого совпадения из sed в виде отдельного файла

Первая строка каждого вопроса начинается с 010. Последняя строка каждого вопроса начинается с нижнего регистра e.

Мне нужно вывести каждое соответствие в отдельный файл.

sed -n '/010/,/e)/p' FileName 

Вышеуказанная команда sed отображает необходимую мне информацию. Как я могу выводить каждое соответствие в свой собственный файл? Первый файл должен иметь имя 1 и приращение на 1 для следующего совпадения.

+0

Вы уже знаете, как получить требуемые данные, чтобы передать это в [csplit] (https://www.gnu.org/software/coreutils/manual/html_node/csplit-invocation.html), чтобы разбить это в отдельные файлы. – potong

ответ

3

sed не можем этого, но awk жестяная банка.

awk -v RS="010" 'NR > 1 {print RS $0 > (NR-1)}' filename 

RS определил разделитель (как правило, новой строки), а NR это номер текущей записи. Я добавляю условие NR>1, потому что, поскольку файл начинается с разделителя записей, первой записью будет пустая строка перед ним.

+1

'>' - оператор перенаправления: строка будет добавлена ​​к имени файла, названному в правой части '>', и файл будет создан, если он не существует. Я использую значение 'NR-1' как имя файла. –

+0

большое спасибо, я не знал об использовании '>' помимо expr eval в awk. Вы открыли мне глаза. – asadz

Смежные вопросы