Объяснение кода Grep

В файле weather.xml есть строка temp="103". Я запускаю эту команду

grep -o "temp=\"[^\"]*\"" ~/.cache/weather.xml

На выходе получается 103.

Что означает [^\"]?

Спасибо

1
задан 16 June 2016 в 03:34

2 ответа

В регулярных выражениях, [...] указывает, что диапазон символов для соответствия, и (в том контексте) ^ указывает на отрицание. Так [^\"] средства любой символ кроме литеральной двойной кавычки. Так "[^"]*" означает двойную кавычку, сопровождаемую последовательностью нуля или большего количества символов кроме двойной кавычки, сопровождаемой заключительной двойной кавычкой.

Примечание, что Escape обратной косой черты только требуются, потому что Вы использовали двойные кавычки вокруг выражения - Вы могли упростить это до

grep -o 'temp="[^"]*"' ~/.cache/weather.xml

, Если Вы хотите, чтобы оно произвело просто числовое температурное чтение, можно использовать совместимое с Perl РЕ вместо этого

grep -Po 'temp="\K[^"]*'
3
ответ дан 16 June 2016 в 03:34

это означает - пропускают возникновение двойной кавычки.

grep-o-> Шоу только часть согласующего отрезка длинной линии, который соответствует ШАБЛОНУ.

*-> это означает 0 или больше, следовательно добираясь 103

\"-> последняя двойная кавычка во временном файле = "103"

1
ответ дан 16 June 2016 в 03:34

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

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