С GNU sed:
sed "s/\(.*\)\(name-.*\)/echo '\1 \2' > \2.txt/;s/-/_/2e" input-file
- Превратить линию
NAME : name-2
в echo "NAME : name-2" > name-2.txt
- Затем заменить второй
-
на _
yielding echo "NAME : name-2" > name_2.txt
e
имеет оболочку для запуска команды, созданной в буфере шаблонов.
Это выводит пустые строки в стандартный вывод, но создает файл для каждой совпадающей строки.
Это зависит от того, что в файле нет ничего, кроме строк, соответствующих этому формату ... но вы можете расширить суть здесь, чтобы пропустить другие строки с помощью n
.