Sorting awk,如何在匹配词后按数字对行排序
我有这样一个文本文件:Sorting awk,如何在匹配词后按数字对行排序,sorting,awk,Sorting,Awk,我有这样一个文本文件: word_1 23.66 word_5 0 word_7 123 word_5 6 word_1 2 word_7 12 word_7 23.7 word_2 21 word_1 3 ... awk -f sort.awk infile 最好使用awk,我如何按照“word_1”后面的数字对行进行排序?我可以给您一些由sed和sort组成的命令序列: sed -r 's/(.*)(word_1 )([^ ]+)(.*)/\3\t&/' your_file |
word_1 23.66 word_5 0 word_7 123
word_5 6 word_1 2 word_7 12
word_7 23.7 word_2 21 word_1 3
...
awk -f sort.awk infile
最好使用awk,我如何按照“word_1”后面的数字对行进行排序?我可以给您一些由
sed
和sort
组成的命令序列:
sed -r 's/(.*)(word_1 )([^ ]+)(.*)/\3\t&/' your_file | sort -n | sed -r 's/[^\t]+\t(.*)/\1/'
word_1
后加上数字,在行前加上制表符GNU awk支持基于索引或值对数组进行排序,请参阅手册页中的
PROCINFO[“sorted_in”]
要实现您的目标,请执行以下操作:
word_1 23.66 word_5 0 word_7 123
word_5 6 word_1 2 word_7 12
word_7 23.7 word_2 21 word_1 3
...
awk -f sort.awk infile
sort.awk
输出:
word_1 23.66 word_5 0 word_7 123
word_7 23.7 word_2 21 word_1 3
word_5 6 word_1 2 word_7 12
如果有多条记录具有相同的值,这将覆盖记录,处理此问题的一种方法是将行号添加到键,即
h[$(i+1),NR]=$0
Nice。我不知道PROCINFO的事。