![매칭 후 나머지 라인을 Grep하십시오.](https://linux55.com/image/38310/%EB%A7%A4%EC%B9%AD%20%ED%9B%84%20%EB%82%98%EB%A8%B8%EC%A7%80%20%EB%9D%BC%EC%9D%B8%EC%9D%84%20Grep%ED%95%98%EC%8B%AD%EC%8B%9C%EC%98%A4..png)
다음과 같이 구성된 두 줄만 포함하는 파일이 있습니다.
$ 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보다 빠르다고 생각합니다.