найти слово / строку, содержащую aq, за которой не следует au

Я думаю, что 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

0
24.03.2019, 23:57
2 ответа

Реализация GNU grepgrep, которая у вас есть в 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.

То, как вы это сделаете, зависит от того, как выглядят ваши данные и что вы на самом деле хотите сопоставить.

4
28.01.2020, 02:22

Я выполнил приведенную ниже команду 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
0
28.01.2020, 02:22

Теги

Похожие вопросы