私は以下を使用しています
while true; do sensors | grep 'Core 1'| sed -r 's/^.*: +(.*) +[(].*$/\1/' >> lmdata.txt; sleep 300; done
滞在
Core 1: +68.0°C (crit = +100.0°C)
到着
+68.0'C
一時値のみを取得するようにsedコマンドを変更するにはどうすればよいですか?
68
ご協力ありがとうございます
答え1
使用sed
:
sensors|sed -nE '/Core 1:/s/[^+]*\+([[:digit:]]+).*/\1/p'
一般言語で次のように書くことができます。
sed
ビエコモードでは、拡張正規表現で使用されます。
- オンラインマッチングコア1:
- 探す...
- +を除くすべて
- それから+
- 次に、1桁以上の数字を保存します。
- その後、行の終わりと一致します。
- 使用。 。 。交換...
- 最初に保存されたパターン
- 結果を印刷して
答え2
他のものを再構成せずにコマンドのsed部分を更新できるはずです。
sed -r 's/^.*: +([[:digit:]]+).* +[(].*$/\1/'
答え3
perl-regexpでgrepを使用してください。
$ sensors|grep -oP "Core 1:\s*\+\K[0-9]+"
70