Linux 中根据某一列的内容拆分文件(指定列内容重复的保存为一个文件,先生成唯一的文件名)

 

 

001、

[root@PC1 test2]# ls
a.txt
[root@PC1 test2]# cat a.txt
01 aa 02 03
04 aa 05 06
07 bb 08 09
10 bb 11 12
13 aa 14 15
16 bb 17 18
19 cc 20 21
22 cc 23 24
25 bb 26 27
28 ee 30
[root@PC1 test2]# awk '{OFS = "\t"; if(!($2 in ay1)) {ay1[$2]++; tmp = $2}; if($2 in ay1 && tmp != $2) {ay1[$2]++};tmp = $2; $2 = ay1[$2]"_"$2; print $0}' a.txt
01      1_aa    02      03
04      1_aa    05      06
07      1_bb    08      09
10      1_bb    11      12
13      2_aa    14      15
16      2_bb    17      18
19      1_cc    20      21
22      1_cc    23      24
25      3_bb    26      27
28      1_ee    30

 

 。

 

002、

[root@PC1 test2]# ls
a.txt
[root@PC1 test2]# cat a.txt
01 aa 02 03
04 aa 05 06
07 bb 08 09
10 bb 11 12
13 aa 14 15
16 bb 17 18
19 cc 20 21
22 cc 23 24
25 bb 26 27
28 ee 30
[root@PC1 test2]# awk 'BEGIN{tmp = 0}{if($2 != tmp) {count++}; tmp = $2; $2 = count"_"$2; print $0 }' a.txt
01 1_aa 02 03
04 1_aa 05 06
07 2_bb 08 09
10 2_bb 11 12
13 3_aa 14 15
16 4_bb 17 18
19 5_cc 20 21
22 5_cc 23 24
25 6_bb 26 27
28 7_ee 30

 。

 

posted @ 2024-06-06 23:52  小鲨鱼2018  阅读(23)  评论(0编辑  收藏  举报