有没有办法对 csv 文件的 grep 输出进行排序?

有没有办法对 csv 文件的 grep 输出进行排序?

我有一个 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

答案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

相关内容