linux 中awk命令實現按照 指定的字元對文字進行排序

小鲨鱼2018發表於2024-11-06

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

相關文章