Я думаю, что init 0 для остановки (НЕ устанавливайте для этого initdefault) и init 5 для завершения работы, отключение питания, если аппаратное обеспечение поддерживает его.
halt завершает все процессы и выключает процессор.
poweroff точно такой же, как остановка, но он также отключает само устройство (свет и все остальное на ПК). Он отправляет команду ACPI на плату, а затем на блок питания, чтобы отключить питание.
Завершение работы похоже на выключение питания, но оно также запускает сценарии выключения.
Источники:
https://serverfault.com/questions/191537/shutdown-what-is-difference-between-power-off-and-halt
http://osdir.com/ml/ os.solaris.managers.summaries / 2001-10 / msg00027.html
Реализация GNU grep
grep
, которая у вас есть в Linux, может использовать стиль PCRE -"отрицательный взгляд -вперед утверждений". PCRE — это сокращение от Perl-совместимых регулярных выражений. Это расширения стандартных регулярных выражений POSIX, и синтаксис того, что вы хотите сделать, выглядит примерно так
q(?!u)
С GNUgrep
:
grep -P 'q(?!u)' file
найдет все строки, содержащие q
, за которыми не следует (непосредственно )с u
.
Дополнительную информацию об утверждениях просмотра с помощью PCRE можно найти, например, по адресу
Стандартное регулярное выражение POSIX может использовать
q[^u]
т. е. «q
следует за (непосредственно )чем-то, что не является u
». Однако этот шаблон также соответствует не-u
символу , тогда как выражение с отрицательным видом -впереди не соответствует символу после q
. Это означает, что приведенное выше выражение не будет соответствовать, например, q
в конце строки. Для этого вы могли бы использовать
q([^u]|$)
которое является расширенным регулярным выражением (используйте grep
с -E
для этого ).
Что касается вас "слово/строка" :слово представляет собой строку из словесных символов , обычно символов, соответствующих [[:alpha:]]
. Строка — это любая строка . Выражение q(?!u)
вверху будет соответствовать любой строке , содержащей q
, за которой непосредственно не следует ()с помощью u
.
Чтобы сопоставить слов , содержащих q
, но не последовательность qu
, вы можете сделать либо
grep -P -o -w '[[:alpha:]]*q(?!u)[[:alpha:]]*'
т.е. извлечь все полные слова (только ), которые содержат q
, за которым не следует u
,или вы можете сделать это в два этапа:
grep -o -w '[[:alpha:]]*q[[:alpha:]]*' | grep -v qu
Для этого не потребуется PCRE (и, следовательно, не будет -P
), и он получит все слова, содержащие q
, а затем удалит(со вторымgrep
)слова, которые содержат qu
. ].
Пример:
$ grep -o -w '[[:alpha:]]*q[[:alpha:]]*' /usr/share/dict/words | grep -v qu
Iraq
Iraqi
Iraqian
Louiqa
miqra
nastaliq
Pontacq
q
qasida
qere
qeri
qintar
qoph
Saqib
shoq
Tareq
Вариант PCRE будет дополнительно возвращать zaqqum
, поскольку он содержит q
, за которым не следует u
.
То, как вы это сделаете, зависит от того, как выглядят ваши данные и что вы на самом деле хотите сопоставить.
Я выполнил приведенную ниже команду awk
пример файла
prqrtwtw
ahayqlo
prasqu
ожидаемый результат
prqrtwtw
ahayqlo
команда:
k=`awk -F "" '{print NF}' examplefile | sort -nr | sed -n '1p'`
for ((i=1;i<=$k;i++))
> do
> awk -v i="$i" -F "" '$i=="q" && $(i+1) !="u" {print $0}' examplefile;done
output
prqrtwtw
ahayqlo