UNIX에서 패턴 사이에 존재하는 네 번째 필드 데이터를 합산합니다.

UNIX에서 패턴 사이에 존재하는 네 번째 필드 데이터를 합산합니다.

내 데이터가 다음과 같다고 가정해 보겠습니다.

*dnet *1234 1.2 
1 port *12 2.3  
3 port1 *34 0.2 
7 *15 0.1 
*dnet *234 0.2 
2 *12 0.1 
4 *123 *234 1.2

필드는 공백으로 구분됩니다.

여기서는 각 에 있는 네 번째 데이터 필드의 합계를 얻고 싶습니다 *dnet. 네 번째 필드 데이터가 있는 필드도 있고 그렇지 않은 필드도 있습니다. 각 개별 네 번째 필드 합계 값을 원합니다 *dnet.

사용해 보았 awk으나 구할 수 없었습니다. 누구든지 도움을 주시면 정말 감사하겠습니다.

위의 출력은 다음과 같습니다.

*dnet *1234 1.2 2.5

*dnet *234 0.2 1.2

답변1

$ awk '/dnet/{if (NR>1) print dnet, sum+0; dnet=$0; sum=0} {sum+=$4} END{print dnet, sum+0}' file
*dnet *1234 1.2  2.5
*dnet *234 0.2  1.2

관련 정보