我有一个像这样的CSV文件:
cat, animal
dog, animal
bear, animal
elephant, animal
tree, object
我想根据第一列对数据进行排序,从最长的单词到最短的单词。 E.g:
elephant, animal
bear, animal
tree, object
cat, animal
dog, animal
如何做到这一点?
答案 0 :(得分:3)
$ awk -F',' '{print length($1),$0}' input.csv | sort -k1nr | cut -d' ' -f 2-
elephant, animal
bear, animal
tree, object
cat, animal
dog, animal
awk
添加一列记录csv列的长度#1 sort
按数字排序第一列cut
删除第一列答案 1 :(得分:1)
awk -F, '{print length($0) ":" $0}' csvfile |
sort -t: -k 1nr -k 2 |
sed 's/^[0-9]*://'
添加一个长度,在长度上反向排序,然后按字母顺序排列在线的其余部分,然后再次取消长度。在测试数据上,它给出了所需的结果。
它是否算作bash
或许有点值得商榷。