Вам нужно соединить строки module
со следующей строкой.
Использованиеsed
:
$ sed '/^module/N;s/\n//' file
module x(a,b,c)
module y(d,e,f,
g,h,i)
module z(j,k,l)
Данные копируются и вставляются как есть, с пробелами в конце каждой строки.
Команда sed
будет печатать каждую строку по мере ее чтения, но когда она встречает строку, начинающуюся со строки module
, она добавляет следующую строку со встроенным символом новой строки в -между (это то, что N
делает ). Мы удаляем этот символ новой строки с заменой до того, как результат будет напечатан.
Если в ваших данных нет пробелов в конце строк, используйте
$ sed '/^module/N;s/\n/ /' file
module x(a,b,c)
module y(d,e,f,
g,h,i)
module z(j,k,l)
На тот случай, если вам понадобится (без пробелов в конце строк ввода):
$ sed -e '/^module/bpp' -e 'H;$bpp' -e 'd' \
-e ':pp' -e 'x;/^$/d;s/\n/ /g' file
module x(a,b,c)
module y(d,e,f, g,h,i)
module z(j,k,l)
Аннотированный sed
сценарий:
/^module/ b print_previous; # print previous record
H; # append this line to hold space
$ b print_previous; # print previous (last) record
d; # end processing this line
:print_previous; # prints a record accumulated in the hold space
x; # swap in the hold space
/^$/ d; # if line is empty, delete it
s/\n/ /g; # replace embedded newlines by spaces
# (implicit print)
Чтобы предотвратить автоматический запуск:sudo systemctl stop minidlna.service && sudo systemctl disable minidlna.service
Я все же хотел бы знать, почему он запускается автоматически, хотя я не настроил его для этого, и почему его нет в списке bum
.