매칭 후 나머지 라인을 Grep하십시오.

매칭 후 나머지 라인을 Grep하십시오.

다음과 같이 구성된 두 줄만 포함하는 파일이 있습니다.

$ cat /tmp/pwpower.log
000D6F0000D34227, -114.10
000D6F0001A405C4, -130.09

이 값은 제가 운영하는 태양광발전소의 전력값입니다. 음수 값은 생성을 의미합니다.

가장 현명한 방법인 grep/sed/awk를 통해 값을 추출해야 합니다. 빼기 기호 없이 두 값을 개별적으로 추출해야 합니다.

지금 내가 하고 있는 일은 약간 어리석은 일이지만 효과가 있습니다. 여러분 중 많은 분들이 나에게 더 현명한 방법을 제안해 주실 수 있을 것이라고 확신합니다. :-) 물론 여기서는 가치 덧셈과 뺄셈만 볼 수 있습니다.

첫 번째 값을 얻으세요:

cat /tmp/pwpower.log |grep -o "\-.*" | head -n 1

두 번째 값을 얻으세요:

cat /tmp/pwpower.log |grep -o "\-.*" | tail -n1

관련 질문은 이러한 STRING을 가져와서 SUM을 계산할 수 있도록 변환하는 쉬운 방법이 있습니까?입니다.

답변1

모든 값:

$ awk -F '[ -]*' '$0=$NF' /tmp/pwpower.log
114.10
130.09

첫 번째 행의 값:

$ awk -F '[ -]*' 'NR==1{print $NF;exit}' /tmp/pwpower.log
114.10

두 번째 행의 값:

$ awk -F '[ -]*' 'NR==2{print $NF;exit}' /tmp/pwpower.log
130.09

모든 값의 합계:

$ awk -F '[ -]*' '{sum+=$NF} END{print sum}' /tmp/pwpower.log
244.19

답변2

cut두 번째 숫자 열을 선택하고 paste -sd+추가할 일련의 숫자를 만들 수 있습니다. 그런 다음 이 도구를 사용하여 bc계산을 수행할 수 있습니다.

$ cut -d',' -f2 pwpower.log | paste -sd+ | bc
-244.19

어떻게 작동하나요?

두 번째 열에서 숫자를 선택합니다.

$ cut -d',' -f2 pwpower.log 
 -114.10
 -130.09

+각 숫자 사이에 기호를 사용하여 한 줄로 형식을 변경합니다 .

$ cut -d',' -f2 pwpower.log | paste -sd+
 -114.10+ -130.09

계산을 수행합니다.

$ cut -d',' -f2 pwpower.log | paste -sd+ | bc
-244.19

절대값을 얻으려면:

$ cut -d',' -f2 pwpower.log | sed 's/-//g' | paste -sd+ | bc
244.19

파일 형식이 pwpower.log보장되는 경우 cut빼기 기호를 생략할 수 있습니다.

$ cut -d'-' -f2 pwpower.log | paste -sd+ | bc
244.19

답변3

키스 방식

$ awk '{print -$2; t+=-$2}; END{print t}' pwpower.log 
114.1
130.09
244.19

답변4

[root@ip-10-186-149-181 ~]# cut -d '-' -f2 /tmp/pwpower.log | paste -sd+ | bc
244.19

그러면 음수 없이 계산이 수행됩니다.

일반적으로 컷이 awk보다 빠르다고 생각합니다.

관련 정보