gpt4 book ai didi

regex - 将终端命令分配给 bash 变量时出错

转载 作者:行者123 更新时间:2023-11-29 09:47:47 24 4
gpt4 key购买 nike

我正在尝试制作一个小的 shell 程序来获取幸运 cookies 报价。当我在我的终端中运行它时,它(几乎)工作正常

curl -s http://www.fortunecookiemessage.com | grep -oP '(<div class=\"quote\").*(</div>)' | sed 's/.*link\">\(.*\)<\/a>.*/\1/'

但是当我尝试像这样将它放入我的 bash 脚本 (run.sh) 时

sentence=$(curl -s http://www.fortunecookiemessage.com | grep -oP '(<div class=\"quote\").*(</div>)' | sed 's/.*link\">\(.*\)<\/a>.*/\1/')

报错如下

bash-3.2# sh run.sh 
usage: grep [-abcDEFGHhIiJLlmnOoPqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
[--context[=num]] [--directories=action] [--label] [--line-buffered]
[--null] [pattern] [file ...]

我需要帮助来解决这个问题。此外,有时提取的报价格式为 <p>QUOTE</p> .这并非一直如此,但有时只是如此。我想知道我必须在 sed 命令的正则表达式中更改什么以删除 <p></p>如果发生,则标记。

我用 set -x 的输出

bash-3.2# sh run.sh 
++ curl -s http://www.fortunecookiemessage.com
++ grep -oP '(<div class=\"quote\").*(</div>)'
++ sed 's/.*link\">\(.*\)<\/a>.*/\1/'
usage: grep [-abcDEFGHhIiJLlmnOoPqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
[--context[=num]] [--directories=action] [--label] [--line-buffered]
[--null] [pattern] [file ...]
(23) Failed writing body
+ sentence=
+ echo

最佳答案

您的 grep 似乎不支持 -P 选项。将您的 grep 命令更改为:

grep -Eo '<div class="quote".*</div>'

关于regex - 将终端命令分配给 bash 变量时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25252162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com