다른 열 값을 기반으로 CSV 파일에서 행을 선택하는 방법은 무엇입니까?

다른 열 값을 기반으로 CSV 파일에서 행을 선택하는 방법은 무엇입니까?

다음 값을 가진 CSV 파일이 있습니다.

col1,col2,col3,col4,col5,col6,col7
1,0,0,0,0,BTS,Active
4,5,3,1,1,LocalMode,Offlne
1,2,5,6,3,PermFault,Offline
1,2,6,6,2,BSC,Active
7,8,2,3,2,NE,Offline
1,7,6,5,2,BSC,Active

다음 예제 조건을 충족하는 방식으로 이 CSV 파일에서 값 행을 가져오고 싶습니다.

1) (col7="Active")이면 모든 행의 col1 값의 합계

2) if (col6 == somevalue && column5 != somevalues) 그러면 모든 행의 col1 값의 합계입니다.

다음 awk 명령을 사용하여 첫 번째 조건을 만족하는 값 열을 기반으로 CSV 파일에서 행을 가져올 수 있습니다.

awk -F, '$7 == "Active" { print }' test.csv

위의 예제 조건 2에서 언급한 것처럼 이 awk 명령에서 여러 조건을 사용하여 col6에 특정 텍스트가 있는지 확인하고 일부 키워드를 무시해야 하는 여러 열 값을 확인하려면 어떻게 해야 합니까? awk 외에 더 좋고 간단한 방법이 있습니까?

답변1

~에서AWK 프로그래밍 언어:

가장 간단한 awk 프로그램은 일련의 패턴 조작 명령문입니다:
pattern { action }
pattern { action }
...

따라서 다음을 시도해 볼 수 있습니다.

awk -F, '
         $7 == "Active" { x += $1; };
         $6 == "value6" && $5 != value5 { y += $1; };
         END { print x, y; }
        ' file

관련 정보