regex search работает с `grep -E`, но не с bash-скриптом?

Я использовал команду nvidia-settings, чтобы включить внешний монитор (выбран режим TwinView). Обратите внимание, что встроенный диалог конфигурации Gnome Classic отображает внешний монитор. Это было на Ubuntu 12.04.

Martin

1
задан 3 April 2014 в 11:18

1 ответ

Если вы напишете [[ "$page" =~ '<img src="[^"]*\.jpg"' ]], правая часть будет рассматриваться как обычная строка, а не регулярное выражение. См. Инструкцию regex Bash. Решение состоит в том, чтобы избежать всех специальных символов.

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

var='<img src="[^"]*\.jpg'

, в этом случае вы делаете не нужно сбрасывать специальные символы один за другим.

#!/bin/bash
page=$(<testregex.txt)
var='<img src="[^"]*\.jpg'

if [[ "$page" =~ $var ]]; then
#    echo $1
    echo "match found"
else
    echo "match not found!"
fi

Я прокомментировал инструкцию echo $1. Разница в оператор regex Bash .

3
ответ дан 24 May 2018 в 09:58
  • 1
    Ничего себе! – udiboy1209 3 April 2014 в 11:59
  • 2
    Не могли бы вы также показать мне, как поставить туда лишнюю ссылку. Просто добавление скобок дает мне синтаксическую ошибку. Должна быть такая var=\<img src="([^"]*\.jpg), но эта ошибка ) дает синтаксическую ошибку. – udiboy1209 3 April 2014 в 12:02
  • 3
    Ладно, я понял. Использование одиночных кавычек при объявлении var, похоже, работает. – udiboy1209 3 April 2014 в 12:15
  • 4
    @udiboy посмотреть на редактирование. Я думаю, что проблема с вашими скобками также решена. – souravc 3 April 2014 в 13:38

Другие вопросы по тегам:

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