Обновление конфетки Ядра Fedora продолжает зависать

Я думаю, что главное отличие между использованием регулярного выражения состоит в том, требуют ли они соответствия всей последовательности или нет. В случае , найти и некоторых других команд bash вы должны соответствовать всей последовательности, в то время как в sed , awk , grep и так далее вы должны соответствовать любой части последовательности. Кроме того, они похожи, но, конечно, не идентичны.

Например, при использовании регулярного выражения в операторах case оболочки bash предполагается, что регулярное выражение описывает весь ряд. Т.е. (я использую пример здесь )

case $SERVER in
db-[0-9]+\.host\.com) echo "DB server"
;;
*)echo "Unknown server"
;;
esac

Вы можете видеть, что db- [0-9] + .host.com описывает последовательность, которая начинается с «db-», затем имеет одну или несколько цифр, а затем заканчивается на «. host.com», так что db-1.host.com будет совпадать, в то время как xdb-1.host.com не будет.

Теперь, если вы посмотрите на sed , и написать образец поиска в аналогичном пути

echo "xdb-1.host.com"| sed -nr '/db-[0-9]+\.host\.com/p'

sed , в отличие от case команды, БУДЕТ напечатать строку xdb-1.host.com, потому что он может найти поиск образца INSIDE этого ряда. Итак, идея не в том, чтобы соответствовать всей последовательности, а в том, чтобы найти любое вхождение образца.

В аналогичном пути при использовании команды regexp в find вся последовательность должна совпадать. Например,

find / -regextype sed -regex ".*\.dat"

найдет все файлы с данными расширения. Но если вы попытаетесь выполнить тот же поиск с sed ,

find / | sed -nr '/.*\.dat/'

он будет соответствовать всем файлам, которые содержат последовательность «.dat» в имени файла.

Конечно, существуют некоторые незначительные синтаксические различия. Например, если вы делаете

find / -name "*.dat"

это также своего рода регулярное выражение, где * означает «любое количество произвольных символов», но в строгом смысле regexp вы должны написать. «*,» где «.» означает любой символ, и * означает любое количество символов рода «»., так что вместе означает любое количество любых символов.

-121--217760-

Если вы просто хотите выделить скрытые файлы (и папки), и вас не волнует раскраска всех остальных файлов, то очевидный подход состоит в том, чтобы запустить ls -la | grep -E «^ |\. [^/| '.]. *»

Если вы хотите сохранить другие цвета, то все начинает усложняться, потому что $ LS _ COLORS изначально не поддерживает раскраску скрытых файлов, как это

Я предложил динамически добавлять скрытые файлы текущего каталога к переменной среды $ LS _ COLORS в качестве псевдо-расширения, затем выполнять ls -la и после этого запускать dircolors для сброса исходной цветовой схемы. Очевидно, что возникнет конфликт, если скрытый файл будет иметь то же имя, что и известное расширение. Также этот метод не работает со скрытыми папками.

Внимание! Это решение является (не очень тщательно протестированным) взломом. Используйте его на свой страх и риск.

для h в $ (ls -A | grep «^\».); делать LS_COLORS="$LS_COLORS*$h=04;05:"; готово; ls -la; eval $ (круглые цвета)

-121--42302-

Для выполнения команды, такой как grep или awk , оболочка должна раскошелиться, что означает, что вы получаете субкорпорацию. Исключениями являются только команды builtin или последняя команда. Но этот последний случай является всего лишь оптимизацией, выполняемой некоторыми оболочками, и не может быть выполнен при некоторых условиях, которые могут изменить поведение (например, существующие ловушки); в основном это неявный exec . Отсюда ваши две подстативы для

foo=$(grep "someword" /path/to/somefile | awk '{print $3}')

Чтобы избежать подстативов, есть различные обходные пути, и вы должны найти их в зависимости от контекста...

1
06.07.2014, 11:57
1 ответ
[

] Рекомендуется проверить сетевое подключение виртуальной машины к Интернету и настройки DNS. Возможно, []yum[] не удаётся подключить серверы репо. [

] [

][]strace[] - это отдельный пакет. Его можно установить после того, как будет устранена проблема с yum[

].
0
28.01.2020, 01:56

Теги

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