csv 파일의 grep 출력을 정렬하는 방법이 있습니까?

csv 파일의 grep 출력을 정렬하는 방법이 있습니까?

검색해야 할 csv 파일이 있습니다. 문제는 그 안에 데이터가 너무 많아서 출력물을 보는 것이 조금 문제가 있다는 것입니다. 이렇게 생겼어

col1,col2,...col23
1,123,...,12.01
43,1123,...,142.455
12,63,...,723.1122
...

그래서 어떤 패턴을 적용한 후 출력을 내림차순으로 정렬하고 grep싶습니다 . 부동 소수점 숫자를 포함합니다. 이를 수행할 수 있는 방법이 있습니까?col23col23

내 말은 이것이다:

grep "pattern" the_file.csv | ...sort it

답변1

사용:

grep "pattern" the_file.csv | sort -t, -nk 23 | column -ts,

또는

grep "pattern" the_file.csv | sed 's/,/ /g' | sort -nk 23 | column -t

지수 표기법으로 sort -g대체sort -n

설명하다:

  • sort -k 23: 23열 기준으로 정렬
  • sort -n: 문자열 값을 기준으로 비교
  • sort -g: 일반적인 수치에 따른 비교
  • sort -t,: 구분 기호로 정렬,
  • column -t: 공백이나 구분 기호( )를 사용하여 -s<delimiter>열을 만듭니다 .
  • sed 's/,/ /g': 모든 줄 ( )에서 s( )를 ,공백으로 바꿉니다.' 'g

관련 정보