나는 다음을 사용하고 있습니다
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