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

 。

 

posted @ 2024-11-06 00:39  小鲨鱼2018  阅读(5)  评论(0编辑  收藏  举报