@ Решение Герберта, вероятно, самое простое, но вы также можете использовать lookarounds:
$ grep -Poz '(?<=:MENU1\n)[^:]*' file
0. public
1. admin
2. webmail
-121--82049-
Причина его отказа с этой ошибкой - интерполяция $ (seq 1 $ k)
внутри команды fanout
.
Позвольте мне объяснить...
Выполнение seq 1 2
возвращает следующее значение:
1
2
Это значение находится внутри двойных кавычек, поэтому новая строка сохраняется в виде значимого текста. Поэтому команда fanout вычисляется следующим образом:
fanout server1 'umask 022 ; for k in 1
2 ; do for i in ear2 ; do echo /appl/as/bin/md5 /appl/as/var/spool/ears/abc/ ; done ; done'
Ваш ksh
не понимает 2
на второй строке, поэтому он уступает.
Вы можете исправить это с помощью xargs
, но затем вы попали во вторую потенциальную проблему, где вы используете k
в качестве счетчика цикла, но $ k
вычисляется до запуска цикла. Кроме того, имеется вложенный корпус, в котором $ ears
необходимо оценить перед запуском сценария, но он используется в цикле, который изменяется во время выполнения.
Я нашел справочную страницу для fanout
, но я не понимаю, почему вы запускаете цикл для одной системы ( server1
), когда существует fanout
для выполнения команды для нескольких систем. Если вы можете объяснить разницу между сервером и ухом , я могу предложить более чистый фрагмент кода. Мое первое предложение может быть таким:
ears='ear1,ear2'
cluster=abc
dmgr=server1
fanout "$dmgr" "/appl/as/bin/md5 /appl/as/var/spool/ears/${cluster}/{$ears}"
-121--254083-
Я не знаю о широко используемых инструментах, написанных ни на одном из этих языков. Node.js не больше зависимости, чем perl или python, хотя, возможно, не так, как обычно устанавливается. Вчера я только что установил узел 0.12 в системе Windows без проблем.
Мой вопрос - почему не C, python, perl, php, awk, bash скрипт или tcl? Все они имеют давнюю историю и широко доступны.
Решено .очевидно, проблема была с USB, поэтому я попытался снова отформатировать USB с помощью этой команды:
sudo dd if=/dev/zero of=/dev/sdb
затем запишите на него файл.iso. теперь он показывает страницу установки без проблем.
cmp
после dd
. У вас возникли проблемы с загрузкой, которые очень похожи на неверные данные на USB-накопителе. Следовательно,пожалуйста, используйте метод записи USB, который повторно -проверяет записанные данные.
dd
сам по себе, повторно -не проверяет записанные данные. Пожалуйста, повторно -проверьте данные вручную, используя cmp
, следуя точным инструкциям в следующем разделе. К сожалению, я не мог придумать более простого метода.
Диски GNOME можно использовать для записи USB (в инструкциях по установке Fedora сказано ). Но, похоже, -не проверяет записанные данные.
Официальные инструкции по установке Fedora «по умолчанию» Fedora Media Writer . По крайней мере, версия Fedora Media Writer , которая у меня есть, автоматически повторно -проверяет записанные данные после их записи на USB. Я не знаю простого способа установить Fedora Media Writer на вашу ОС Ubuntu :-(.
https://docs.fedoraproject.org/f28/install-guide/install/Preparing_for_Installation.html
Программа Ubuntu Startup Disk Creator у меня вообще не работала. Я думаю, что он хочет писать только ISO-образы Ubuntu, а не Fedora.
cmp
послеdd
В принципе, это может быть простая cmp
команда. К сожалению, есть некоторые трудности, которые вернут бесполезные результаты, поэтому мне нужно их объяснить.
Я полагаю, что cmp
также могут показать различия, если вы когда-либо разрешали монтировать записанный USB в системе Linux :-(. Это, вероятно, произойдет, если вы когда-нибудь снова подключите его к системе Linux после его написания! (Или успешно загрузить Fedora Live USB?? )Ты должен быть осторожен с ним!
Итак, вы хотите запустить dd
для записи данных, а затем команду cmp
для проверки данных USB без повторного -подключения USB (или перезагрузки )между ними.
Сначала запустите команду dd
. Не забывайте проявлять большую осторожность и не стирайте содержимое внутреннего жесткого диска :).
Затем помните, что вы должны запустить sync
, чтобы убедиться, что запись данных завершена.
Затем,вы сможете запустить echo 3 | sudo tee /proc/sys/vm/drop_caches
. Этот шаг необходим, чтобы убедиться, что cmp
не будет просто считывать данные из кэшей в системной оперативной памяти.
Тогда можно бежать
# cmp Fedora-Workstation-Live-28.iso /dev/sdb
. где sdb
— имя вашего USB-устройства, а файл .iso
— имя вашего ISO-файла. Эта команда может отображать ошибки ввода-вывода или различия, если проблема заключается в том, что ваш USB-накопитель нуждается в замене.
В принципе, можно пойти дальше и проверить, правильно ли USB-накопитель сохраняет данные после его извлечения и отключения питания. Так что для этого потребуется альтернативный метод, отключающий автоматическое -монтирование вашего графического входа. Может быть очень сложно понять, как временно отключить автоматическое -монтирование :-(. Я думаю, что самый простой способ — войти в текстовую консоль и запустить оттуда свои команды. Убедитесь, что вы не вернетесь к графическому входу в систему, пока не закончите! Для получения дополнительной информации о входе в систему с текстовой консоли см. здесь .
Судя по имеющейся информации, initramfs, считанные с вашего USB-накопителя, повреждены. Вы можете попробовать проверить данные USB в той же системе, в которой вы записали USB. Это может быть полезно для подтверждения какой-либо проблемы с записью на USB-накопитель.
Для полноты полный список возможностей::-
Я нашел другие неразгаданные загадки, описанные с таким же сообщением об ошибке и очень похожими условиями:
[1.81660] ---[end Kernel] panic - not syncing: VFS: unable to mount root fs on unknown-block(0,0).
К сожалению, это не настоящая конкретная ошибка.
Я дважды -проверил; Fedora -Рабочая станция -Live 28 использует initramfs . Иногда его также называют типом initrd .
Эта ошибка будет показана, если вы настроили загрузку как с ядром, так и с initramfs, но какая-то ошибка препятствует загрузке initramfs.
Например, один из способов вызвать эту ошибку — нажать специальную клавишу в меню загрузки, чтобы начать временное редактирование параметров загрузки. Теоретически вы могли начать редактировать параметры загрузки и непреднамеренно удалить параметр initrd
. Так что я должен упомянуть об этом как о возможности :). Обратите внимание, что этот тип редактирования является временным. Таким образом, вы можете просто загрузиться снова и убедиться, что вы не вносите изменения, которые отключают initramfs :).
В этом случае ядро может «упасть» на загрузку в старом -стиле без initramfs, но тогда у него не будет никакого «блочного устройства», которое было указано для монтирования в качестве корневого fs. "(0,0 )" означает "неизвестно"; этот номер устройства никогда не является действительным блочным устройством.
Но я не думаю, что это сделали вы (и некоторые другие ).
Таким образом, я думаю, что в начале процесса загрузки может возникнуть более конкретная ошибка. К сожалению, если было сообщение об ошибке, возможно, вы его не видите, потому что оно прокручивается за пределы верхней части экрана, если с тех пор было слишком много сообщений :).
Поиск изображения для «невозможно смонтировать корневую файловую систему в неизвестном блоке -(0,0 )». показывает, что трассировка вызова ядра очень часто заполняет экран. Когда это происходит, вы не можете увидеть, было ли какое-либо предыдущее сообщение об ошибке.
Я нашел пример такой ошибки, размещенный относительно другого Linux:
https://bbs.archlinux.org/viewtopic.php?id=220178
Initramfs unpacking failed: junk in compressed archive
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
...
--- [end Kernel] panic - not syncing: VFS: unable to mount root fs on unknown-block(0,0).
РЕДАКТИРОВАТЬ :назвал его :-). «Ошибка распаковки Initramfs :» была настоящей ошибкой. «XZ -сжатые данные повреждены» указывает на то, что initramfs неправильно считывается с USB