linux 中awk命令实现按照 指定的字符对文本进行排序
001、
[root@PC1 test1]# ls a.txt [root@PC1 test1]# cat a.txt ## 测试数据,对如下文本按照a、b进行排序输出 01 02b 03 04 05 06a 07 08 09 10b 11 12 13 14b 15 16 17 18a 19 20 [root@PC1 test1]# awk '{if($0 ~ /a/) {ay1[NR] = $0} else {ay2[NR] = $0}}END{for(i in ay1) {print ay1[i]}; for(i in ay2) {print ay2[i]}}' a.txt 17 18a 19 20 05 06a 07 08 13 14b 15 16 01 02b 03 04 09 10b 11 12
002、
[root@PC1 test1]# ls a.txt [root@PC1 test1]# cat a.txt ## 如果数据整齐,可用sort排序 01 02b 03 04 05 06a 07 08 09 10b 11 12 13 14b 15 16 17 18a 19 20 [root@PC1 test1]# sort -t $'\t' -k 2.3,2.3 a.txt 05 06a 07 08 17 18a 19 20 01 02b 03 04 09 10b 11 12 13 14b 15 16
。