linux 中实现一列数据等长分组并命名

 

001、split实现

 a、

复制代码
[root@pc1 test1]# ls
a.txt
[root@pc1 test1]# cat a.txt     ## 测试文件
01
02
03
04
05
06
07
08
09
10
11
12
[root@pc1 test1]# split -l 4 a.txt batch -d     ## split -l指定每个文件的行数, batch为前缀,-d参数表示按数字递增
[root@pc1 test1]# ls
a.txt  batch00  batch01  batch02
复制代码

 

b、

复制代码
[root@pc1 test1]# ls
a.txt  batch00  batch01  batch02
[root@pc1 test1]# cat batch00     ## 结果文件
01
02
03
04
[root@pc1 test1]# cat batch01
05
06
07
08
[root@pc1 test1]# cat batch02
09
10
11
12
复制代码

 

c、重命名

复制代码
[root@pc1 test1]# ls
a.txt  batch00  batch01  batch02
[root@pc1 test1]# find batch*
batch00
batch01
batch02
[root@pc1 test1]# find batch* | awk '{print $0, $0, NR}'
batch00 batch00 1
batch01 batch01 2
batch02 batch02 3
[root@pc1 test1]# find batch* | awk '{print $0, $0, NR}' | awk '{sub(/[0-9]+/, "", $2); print $1, $2$3}'
batch00 batch1
batch01 batch2
batch02 batch3                   ## 按照正常数字逻辑重命名
[root@pc1 test1]# find batch* | awk '{print $0, $0, NR}' | awk '{sub(/[0-9]+/, "", $2); print $1, $2$3}' | while read {i,j}; do mv $i $j; done
[root@pc1 test1]# ls
a.txt  batch1  batch2  batch3
复制代码

 

002、sed实现

a、

复制代码
[root@pc1 test1]# ls
a.txt
[root@pc1 test1]# cat a.txt       ## 测试数据
01
02
03
04
05
06
07
08
09
10
11
12
[root@pc1 test1]# seq 1 4 $(wc -l < a.txt) | paste - <(seq 4 4 $(wc -l < a.txt)) | awk '{OFS = "\t"; print NR, $0}'
1       1       4
2       5       8
3       9       12
[root@pc1 test1]# seq 1 4 $(wc -l < a.txt) | paste - <(seq 4 4 $(wc -l < a.txt)) | awk '{OFS = "\t"; print NR, $0}' | while read {i,j,k}; do sed -n "$j,$k"p a.txt > batch$i.txt; done
[root@pc1 test1]# ls
a.txt  batch1.txt  batch2.txt  batch3.txt
复制代码

 

复制代码
[root@pc1 test1]# ls
a.txt  batch1.txt  batch2.txt  batch3.txt
[root@pc1 test1]# cat batch1.txt         ## 结果文件
01
02
03
04
[root@pc1 test1]# cat batch2.txt
05
06
07
08
[root@pc1 test1]# cat batch3.txt
09
10
11
12
复制代码

 。

 

posted @   小鲨鱼2018  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-09-27 windows如何配置环境变量
2021-09-27 Linux环境变量配置全攻略
2020-09-27 R语言中rep函数的用法
2020-09-27 java.io.FileNotFoundException: (Too many open files) gatk MarkDuplicates标记重复报错解决
点击右上角即可分享
微信分享提示