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