В файле weather.xml
есть строка temp="103"
. Я запускаю эту команду
grep -o "temp=\"[^\"]*\"" ~/.cache/weather.xml
На выходе получается 103
.
Что означает [^\"]
?
Спасибо
В регулярных выражениях, [...]
указывает, что диапазон символов для соответствия, и (в том контексте) ^
указывает на отрицание. Так [^\"]
средства любой символ кроме литеральной двойной кавычки. Так "[^"]*"
означает двойную кавычку, сопровождаемую последовательностью нуля или большего количества символов кроме двойной кавычки, сопровождаемой заключительной двойной кавычкой.
Примечание, что Escape обратной косой черты только требуются, потому что Вы использовали двойные кавычки вокруг выражения - Вы могли упростить это до
grep -o 'temp="[^"]*"' ~/.cache/weather.xml
, Если Вы хотите, чтобы оно произвело просто числовое температурное чтение, можно использовать совместимое с Perl РЕ вместо этого
grep -Po 'temp="\K[^"]*'
это означает - пропускают возникновение двойной кавычки.
grep-o-> Шоу только часть согласующего отрезка длинной линии, который соответствует ШАБЛОНУ.
*-> это означает 0 или больше, следовательно добираясь 103
\"-> последняя двойная кавычка во временном файле = "103"