GREP Частичная строка только

В дополнение к ответу Тобиса я хочу указать, что следует проверить существующие параметры shebang bash в сценарии (например, #! / bin / bash -e) перед вызовом просто bash foo.sh. Вызов скрипта через 'bash foo.sh' не будет заботиться о существующих параметрах bash в shebang.

0
12.06.2018, 00:07
2 ответа

прочтите регулярное выражение:

$ echo 'sdnfasdnbfas;jdfnba;ldjfnb;asdf[MESG: I NEED THIS: 1] adsfasdfasdfasdfasdf' | grep -Eo '\[.*\]'
[MESG: I NEED THIS: 1]
$ 
1
28.01.2020, 02:42

Глядя на ваш собственный ответ на этот вопрос , вот предложение:

for number in 1 2 3; do
    string="[MESG: I NEED THIS: $number]"

    if grep -qF "$string" /don/key; then
        printf 'Matched %d\n' "$number"
    else
        printf 'Did not match %d\n' "$number"
    fi
done

Обратите внимание: если вы хотите сопоставить фиксированную строку (, а не регулярное выражение ), вы должны использовать -Fс grep. Если вы не используете -F, вам придется экранировать любые специальные символы в регулярных выражениях (, в данном случае [и ]).

-qостанавливает grepот любого вывода. Нас не интересует вывод, только совпадает он или нет.

Регулярное выражение [MESG: I NEED THIS: 1]соответствует ровно одному символу из набора символов внутри [...], а это не то, что вам нужно.

0
28.01.2020, 02:42

Теги

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