免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 11007 | 回复: 12
打印 上一主题 下一主题

shell 读取行文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-01 17:12 |只看该作者 |倒序浏览
我有这样一个文件
格式如下:
      1 CC000000022J90010400000
      1 CC000000022J90010504000
      1 CC000000022J90010524000
      1 CC000000022J90010793000
      2 CC000000022J90011217000
      2 CC000000022J90011354000
      1 CC000000022J90011557000
      2 CC000000022J90011575000
      1 CC000000022J90011583000
      1 CC000000022J90011591000
      1 CC000001057
      1 CC000001057J90004712000
      1 CC000001057J90004719000
      2 CC000001057J90004724000
      1 CC000001057J90004726000
      1 CC000001057J90004728000
      1 CC000001057J90004731000
      1 CC000001057J90004733000
      1 CC000001057J90004759000
      1 CC000001057J90004761000
      1 CC000001057J90004778000
      1 CC000001057J90004788000
      2 CC000001057J90004790000
      1 CC000001057J90004792000
      3 CC000001057J90004811000



我想读取这个文件的前十行,写入一个文件,然后把文件的其他内容写入另一个文件 ?

该怎么实现啊

论坛徽章:
0
2 [报告]
发表于 2008-08-01 17:16 |只看该作者
可以用sed,awk,head,来实现第一个需求
可以用sed,awk来实现第二个需求

sed有关于行的操作,最简单。

sed -n '1,10p' txt
sed -n '11,$p' txt

如果你比较风骚,可以用while read line来做。

论坛徽章:
0
3 [报告]
发表于 2008-08-01 17:18 |只看该作者
head -n 10

论坛徽章:
0
4 [报告]
发表于 2008-08-01 18:34 |只看该作者
sed -n '1,10p'
sed '1,10d'

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2008-08-01 18:50 |只看该作者
while read line;do ((++n));((n<=10)) && echo $line >>file1 || echo $line >>file2;done<file

论坛徽章:
0
6 [报告]
发表于 2008-08-01 18:53 |只看该作者
原帖由 寂寞烈火 于 2008-8-1 18:50 发表
while read line;do ((++n));((n>file1 || echo $line >>file2;done

论坛徽章:
0
7 [报告]
发表于 2008-08-01 19:17 |只看该作者
再来一个
awk '{if(NR<=10){print > "file1"}else{print > "file2"}}'

论坛徽章:
0
8 [报告]
发表于 2008-08-01 19:44 |只看该作者
head  -n 10 >file1

cat ufile | sed '1,10w file1'
cat ufile | sed '10,$w file2'

awk '{if(NR<=10){print > "file1"}else{print > "file2"}}'

论坛徽章:
0
9 [报告]
发表于 2008-08-05 16:59 |只看该作者
% cat aaa.txt
222.222.222.555 1217865024
222.222.333.555 1217865024
222.222.444.555 1217865024

% while read line;do ((++n));((n<=2)) && echo $line >>a.txt || echo $line >>b.txt;done<aaa.txt
Badly placed ()'s.

我测试,结果有报错----Badly placed ()'s.
高手们,是什么原因呢?请教!

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
10 [报告]
发表于 2008-08-05 17:05 |只看该作者
原帖由 tchmuzi 于 2008-8-5 16:59 发表
% cat aaa.txt
222.222.222.555 1217865024
222.222.333.555 1217865024
222.222.444.555 1217865024

% while read line;do ((++n));((n>a.txt || echo $line >>b.txt;done


% 的PS1,楼主什么系统?用的什么shell?

这样试试:
while read line;do ((n++));[ $n -le 2 ] && echo $line >>a.txt || echo $line >>b.txt;done<aaa.txt
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP