Linux bash의 csv 필터

Linux bash의 csv 필터

질문:

5개 열이 있는 CSV 파일이 있습니다(첫 번째 열은 문자열이고 나머지 4개 열은 정수입니다). 새 CSV 파일의 세 번째 열 "수입"을 기준으로 필터링하고 싶습니다. 가장 큰 열은 위쪽에, 가장 작은 열은 아래쪽에 있습니다.

다음과 같은 것을 사용해야 할 것 같습니다.awk -F '","' 'BEGIN {OFS=","} { if (Revenues($5) > ?? print }' Valuation.csv > Ranking.csv

데이터:

Company,Nbr employees, Revenues  , Revenues per employee , Valuation 
Facebook,"35,587","55,800,000,000","1,567,988","491,000,000,000"
Uber,"16,000","11,300,000,000","706,250","120,000,000,000"
Snapchat,"3,069","1,180,000,000","384,490","7,200,000,000"
Airbnb,"3,100","2,600,000,000","838,710","38,000,000,000"
LinkedIn,"13,000","26,200,000,000","2,015,385","26,200,000,000"
Coursora,280,"140,000,000","500,000","815,000,000"
Google,"98,771","39,120,000,000","396,068","720,000,000,000"
Stripe,"1,500","450,000,000","300,000","22,500,000,000"
Epic Games,700,"3,000,000,000","4,285,714","15,000,000,000"
Grab,"3,000","2,750,000,000","916,667","10,000,000,000"
Pinterest,800,"1,000,000,000","1,250,000","12,000,000,000"

답변1

이 시도,

 head -1 Valuation.csv > Ranking.csv && tail -n+2 Valuation.csv | sort -t '"' -nrk4 >> Ranking.csv
  • head ....제목을 순위 파일에 복사
  • tail .... | sort ...네 번째 열은 구분 기호인 헤더를 제외하여 정렬됩니다 ".
  • -n+2두 번째 줄부터 파일을 인쇄합니다
  • -nrk4"숫자를 구분 기호로 사용하여 네 번째 열을 역순으로 정렬합니다.

산출:

Company,Nbr employees, Revenues  , Revenues per employee , Valuation 
Facebook,"35,587","55,800,000,000","1,567,988","491,000,000,000"
Google,"98,771","39,120,000,000","396,068","720,000,000,000"
LinkedIn,"13,000","26,200,000,000","2,015,385","26,200,000,000"
Uber,"16,000","11,300,000,000","706,250","120,000,000,000"
Grab,"3,000","2,750,000,000","916,667","10,000,000,000"
Airbnb,"3,100","2,600,000,000","838,710","38,000,000,000"
Snapchat,"3,069","1,180,000,000","384,490","7,200,000,000"
Stripe,"1,500","450,000,000","300,000","22,500,000,000"
Epic Games,700,"3,000,000,000","4,285,714","15,000,000,000"
Pinterest,800,"1,000,000,000","1,250,000","12,000,000,000"
Coursora,280,"140,000,000","500,000","815,000,000"

관련 정보