Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3031915
  • 博文数量: 272
  • 博客积分: 5544
  • 博客等级: 大校
  • 技术积分: 5496
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 00:48
个人简介

  每个人都要有一个骨灰级的爱好,不为金钱,而纯粹是为了在这个领域享受追寻真理的快乐。

文章分类

全部博文(272)

文章存档

2015年(2)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2011-07-05 14:14:52

有一个100条记录的文件
如何按每个文件12条的方式,拆分成多个文件,文件命名方式如:
file1.txt,file2.txt....fileN.txt
  1. awk 'NR%12==1{close(p".txt");++p}{print > p".txt"}' file

[解析]

  NR对12取余数,等于1的时候那就是第1行,第13行,第25行....以此类推,当是第一行时,执行关闭这个文件,当然这里没有就是空操作,然后自加一次,把该行写入1.txt文件里,第2行,3行都这样操作,直到第13行,余数等于1了,关闭之前的1.txt文件,然后P自加一次,从13行开始写入到第2个文件2.txt里。

  这里再特别介绍一下awk里的 > 和 >> 的区别,跟shell有一些差异,awk里的 > 是覆盖原有文件的内容,而追加awk自己的操作,>> 则是不覆盖原有文件的内容只追加awk的操作。

 

文本:

index
a
b
c
index
d
e
f
index
h
i
j

要求以"index"为分割符,把内容拆分成单独的若干个文件:

 

  1. awk '/index/{close(p".txt");++p}{print > p".txt"}' file

[解析]

  这个就是利用匹配index内容和p变量的自加来分割开文件打印。

阅读(7258) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~