Grep

有沒有辦法對 csv 文件的 grep 輸出進行排序?

  • December 23, 2016

我有一個 csv 文件,我需要在其中進行搜尋。問題是其中的數據太多,並且查看輸出有點問題。看起來像這樣

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

因此,在對其應用一些grep模式之後,我希望輸出按col23降序排序。col23包含浮點數。有沒有辦法做到這一點?

我的意思是這樣的:

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

採用:

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

引用自:https://unix.stackexchange.com/questions/332327