这个 grep 命令实际上做什么?

这个 grep 命令实际上做什么?

我正在尝试掌握 grep。我从某人为从某个网站获取天气信息而编写的 GeekLet 脚本中获取了以下命令:

curl -s 'http://thefuckingweather.com/?zipcode=61820' | grep '"content\|"remark\|span' || sed 's/<[^>]*>//g' | sed 's/]*>//g' | sed 's/&#176;/°/'

我现在不担心 sed 命令。我知道它可以清除输出,使其格式整齐,但现在我只是想弄清楚 grep 命令。

我有几个问题,那里的所有指南/手册似乎都没有明确的答案:

  1. 这里的反斜杠 ( \) 起什么作用?
  2. 中间的管道符“|”起什么作用?
  3. 为什么“content\|”用双引号引起来?

另外,您知道其他任何涉及使用 grep 解析 html 内容的想法/指南吗?

答案1

  1. 这里的反斜杠 ( \) 起什么作用?

    grep使用“逃脱“管道(|)表示逻辑或。换句话说,grep 'foo\|bar'表示打印包含任何一个“foo”或者“酒吧”。

  2. 中间的管道符“|”起什么作用?

    参见问题 1 的答案。

  3. 为什么“content\|”用双引号引起来?

    不是。引号是被搜索模式的一部分,curl你给出的命令的输出包含以下几行:

    </title><meta http-equiv="Content-Language" content="en-us" /> 
    [...]  
    <div class="content">
    

    单词“content”之前的引号(不是引号,第二个引号"属于下一个模式,"remark)用于使 grep 仅打印上面的第二行。它是实际搜索模式的一部分:"content

相关内容