Мой сделал то же самое. Вы случайно не пытались установить обновления, используя функцию обновления в Gnome?
В любом случае, вот что исправило это для меня:
Загрузитесь в GRUB (или любой другой системный загрузчик, который вы используете), и отредактируйте командную строку ядра так, чтобы она имела systemd.unit=graphical.target
. Затем дайте ему загрузиться, используя новые параметры.
GDM должен запуститься, и вы сможете войти в систему как обычно.
Когда вы перезагружаетесь, он должен быть распакован.
Я не знаю , но моя гипотеза состоит в том, что функция обновления временно изменяет цель загрузки по умолчанию, и цель обновления каким-то образом загромождает.
Awk
solución:
awk '/^zone /{
if (f) print r;
r = $0; f = 0; next
}
{ r = r ORS $0; if (/^[^*]* pwwn/) f = 1; }
END{ if (f) print r }' file
La salida:
zone name tommy
* pwwn xxxxxxxx
pwwn xyzabcda
* pwwn xcvuytnm
zone name angelfalls
* pwwn xxxxxxxx
pwwn xyzabcda
zone name Newyork
* pwwn xxxxxxxx
pwwn xyzabcda
Así es como haría esto como una tubería perl rápida:
perl -p00e 's/\nzone/\n\nzone/g' inputfile \
| perl -n00e '$t = $_; s/^\*.*?\n//mg; print $t if /pwwn/' \
| perl -p00e 's/\n\n/\n/'
La primera línea agrega una línea en blanco entre cada registro. La segunda línea itera sobre cada registro, verificando si quedan líneas pwwn
después de eliminar todas las líneas que comienzan con *dentro de ese registro --y, de ser así, imprime ese registro. La tercera línea elimina las líneas en blanco que separan cada registro.
$ awk -v RS='(^|\n)zone' '/\n[^*]/ { print "zone" $0 }' input
zone name tommy
* pwwn xxxxxxxx
pwwn xyzabcda
* pwwn xcvuytnm
zone name angelfalls
* pwwn xxxxxxxx
pwwn xyzabcda
zone name Newyork
* pwwn xxxxxxxx
pwwn xyzabcda
Esta secuencia de comandos awk
establece el Separador de registros(RS
)al comienzo del archivo de entrada o una nueva línea, seguido de la palabra "zona". Luego imprime cada "registro" que contiene al menos una nueva línea no seguida por un *
.
Tiene que imprimir la palabra "zona" junto con $0
porque awk
elimina automáticamente RS
de cada registro de entrada.
NOTA :Debido a que RS
no es solo una nueva línea en sí misma, $0
contiene las nuevas líneas al final de cada línea de entrada (, esto está muy relacionado con la razón mencionada anteriormente por qué " zone" tiene que ser impreso ). Esto significa que habrá una línea en blanco adicional al final de la salida. Si esto es un problema, la forma más fácil de deshacerse de él es con sed
. p.ej.
awk -v RS='(^|\n)zone' '/\n[^*]/ { print "zone" $0 }' input | sed '$d'
Finalmente, si pwwn
es una parte importante de los criterios de coincidencia, cambie la coincidencia de expresión regular en el script de /\n[^*]/
a /\n[^*] pwwn/
. (con la entrada de muestra dada, la salida es idéntica, pero puede diferir con su entrada real mucho más grande)