Grep代码解释

Grep代码解释

在文件中weather.xml,有字符串temp="103"。我运行此命令

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

输出是103

这是什么[^\"]意思?

谢谢

答案1

在正则表达式中,[...]表示要匹配的字符范围,并且(在该上下文中)^表示否定。 So[^\"]表示除文字双引号之外的任何字符。 So"[^"]*"表示双引号,后跟除双引号之外的零个或多个字符序列,后跟结束双引号。

请注意,反斜杠转义只是因为您在表达式周围使用了双引号 - 您可以将其简化为

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

如果您希望它仅输出数字温度读数,则可以使用与 Perl 兼容的 RE

grep -Po 'temp="\K[^"]*'

答案2

这意味着——跳过双引号的出现。

grep -o -> 仅显示与 PATTERN 匹配的匹配行的部分。

* -> 这意味着 0 个或更多,因此得到 103

\" -> temp="103" 中的最后一个双引号

相关内容