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
私の出力(エコー)が空です。私が逃したアイデアはありますか?
答え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
」。その範囲内の1つ以上の数字、ドット、および後に+
orが続く1つ以上の数字を含む文字列を見つけます-
。