Chinaunix

标题: 请教文件分割的问题 [打印本页]

作者: o枫叶o飘零    时间: 2014-07-08 20:24
标题: 请教文件分割的问题
目前有一个文件aaa     行数未知
要求是每50W行进行分割   分割后的文件名为  a01.txt   a02.txt a03.txt...

貌似split只能自己定义分割的文件名
split -l 500000 aaa  a01.txt

这样结果就成了
a01.txtaa   a01.txtab  
达到不我想要的结果...
作者: Herowinter    时间: 2014-07-08 20:26
怎么又来了,没觉得50w和上午的20相比有什么本质区别。。。
作者: o枫叶o飘零    时间: 2014-07-08 20:45
中午出去有事了  没有看帖子



看了下上午的帖子    变更的代码如下
awk -v m=500000 '{if(NR%m==1)f++;print>"a"f".txt"}' aaa

生成的文件如下   
a1.txt  a2.txt  ......a10.txt
前10位能否补成a01.txt   a02.txt?
作者: Kasiotao    时间: 2014-07-09 00:20
回复 3# o枫叶o飘零
楼主要不要这样。。。我觉得各位大大已经写的够清楚了,你好歹也学一点点把,awk的语法和c是类似的吧?
  1. awk -v m=2 '{if(NR%m==1)f++;n=f<10?"0"f:f;print>"a"n".txt"}
复制代码

作者: yestreenstars    时间: 2014-07-09 09:10
  1. awk -vm=50000 '{if(NR%m==1)f++;f=sprintf("%02d",f);print > "a"f".txt"}' aaa
复制代码

作者: Herowinter    时间: 2014-07-09 09:12
回复 5# yestreenstars

还是星辰大神好,不过50W好像还要1个零。
   
作者: yestreenstars    时间: 2014-07-09 09:12
回复 6# Herowinter

不要在意这些细节啦~
   
作者: lklkxcxc    时间: 2014-07-24 14:42
回复 5# yestreenstars
不好意思,请教你:
我理解的是
(NR%m==1)不是只代表1-50000行,那后面的50001-100000 。。。。是怎么分割的


   
作者: yestreenstars    时间: 2014-07-24 14:48
回复 8# lklkxcxc

1、500001、1000001、……

这些行和500000相余都等于1
   
作者: li0924    时间: 2014-07-24 14:52
split有个d的参数
  1. split -d -l 500000 aaa a
复制代码

作者: lklkxcxc    时间: 2014-07-24 15:07
回复 5# yestreenstars
谢谢回答,模仿大师:
awk -v m=10 '{if(NR%m==1)f++;f=1;print > f".txt"}' hosts
生成的1.txt怎么是全部hosts文件记录,2.txt才是前10行,没有3.txt。hosts里面记录超过100行

每太搞懂循环的过程, 有没有想过文档可以去看下大师的思路,谢啦



   
作者: li0924    时间: 2014-07-24 15:10
回复 11# lklkxcxc
你把f=1去掉;

   
作者: Shell_HAT    时间: 2014-07-24 15:10
回复 11# lklkxcxc


awk -v m=10 '{if(NR%m==1)f++;f=1;print > f".txt"}' hosts
你这个 f=1 的目的是什么?
作者: lklkxcxc    时间: 2014-07-24 15:11
回复 13# Shell_HAT
f=1纯粹是为了后面命名1.txt,2.txt。说实话没搞懂f++代表的意思

   
作者: Shell_HAT    时间: 2014-07-24 15:15
回复 14# lklkxcxc


++ 是自加运算符
第1次执行 f++ 之后,f=1
第2次执行 f++ 之后,f=2
第3次执行 f++ 之后,f=3
......
作者: lklkxcxc    时间: 2014-07-24 15:23
回复 15# Shell_HAT
这会懂了,谢谢大家!
我改写成这个把循环的过程看到了,明白了那个循环处理过程:
awk -v m=10 '{if(NR%m==1)f++;print f}' hosts

   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2