Similar a la respuesta de oliv, quizás un poco más simple:
gawk -v RS='=+\n' '
NR % 2 == 0 {header = $0; next}
/[^[:space:]]/ {printf "%s", RT header RT $0}
END {print RT}
' output.txt
Usando una línea de =
s como separador de registro. El encabezado es entonces cada registro con número par. Y el "contenido" no está vacío si contiene un carácter de espacio en blanco que no sea -.
RT
es una variable específica de GNU awk que contiene "El texto de entrada que coincidió con el texto indicado por RS, el separador de registros. Se establece cada vez que se lee un registro".
этот интерфейс командной строки удалит все файлы в каталоге /etc/yum.repos.d, исключит файлы, а также распечатает удаленные файлы
ssh "root@$IP" "find /etc/yum.repos.d ! -name local.repo ! -name redhat.repo ! -name cluster.repo -type f -delete -print"
ssh "root@$machine" '
find /etc/yum.repos.d -type f ! \(
-name local.repo -o \
-name redhat.repo -o \
-name cluster.repo \) –delete
'
(предполагается, что оболочка входа пользователя root на $machine
— это Bourne -, например ).
Помните, что вы передаете в ssh
не аргументы команды для запуска на удаленном хосте, а строку, которая интерпретируется как код оболочки оболочкой входа удаленного пользователя. Поэтому проще всего поместить эту строку в одинарные кавычки, чтобы локальная оболочка не мешала ей.