我在 sed 编辑时遇到问题。当我跑步时:
close=`curl 'https://finance.yahoo.com/quote/INTC?p=INTC&.tsrc=fin-srch'|html2text|sed -n '/Add to watchlist/,$p'|sed -n '/At close\:/q;p'|head -n-1|tail -n+3`; echo $close
我得到:45.60+0.21 (+0.46%)
+
但是,当我添加额外的 sed 命令时,会删除第一个或之前的除浮点数之外的所有内容-
,如下所示:
close=`curl 'https://finance.yahoo.com/quote/INTC?p=INTC&.tsrc=fin-srch'|html2text|sed -n '/Add to watchlist/,$p'|sed -n '/At close\:/q;p'|head -n-1|tail -n+3|sed -n '/^\([0-9]*\.[0-9]*\)[+-].*$/\1/'`; echo $close
我的输出(echo)是空的。有什么想法我遗漏了什么吗?
答案1
您可以简化整个管道
curl ... |
html2text|
sed -n '/Add to watchlist/,/At close/s/^\([0-9][0-9]*\.[0-9][0-9]*\)[-+].*/\1/p'
如果您有 GNU,sed
您可以使用其更强大的 RE 引擎来稍微简化表达式
sed -rn '/Add to watchlist/,/At close/s/^([0-9]+\.[0-9]+)[-+].*/\1/p'
该sed
命令仅查看行包括 和 之间“ Add to watchlist
“ 和 ” At close
”。在该范围内,它查找包含一个或多个数字、一个点以及一个或多个数字的字符串,以便其后跟+
或-
。