10 2013 档案

摘要:【场景】 比如说我有3个文件 a.txt b.txt c.txt 他们的行数相同 其中c.txt中有一些是空行,我想把c.txt中的这些空行删掉,同时对应的a.txt和b.txt的这些行数也要去掉 请问应该怎么做呢??【代码】awk 'FNR==NR{if(! NF) a[FNR]=1;else print > FILENAME;next}{if(! a[FNR]) print>FILENAME}' c a b【解析】 FNR:awk内置变量;当前文件已读的行数。 NR:已读的行数。 NF: 域的个数;空行则为0 FILENAME:当前读的文件名字对C文件;存在空行 阅读全文 »
posted @ 2013-10-21 22:28 lottu 阅读(251) 评论(0) 推荐(0) 编辑
摘要:其实这个在该系列六已经讲解如何去行求和!在此需求我就不累赘了!再重新讲解无非是提供一种新方法;利用数组来实现(之前是借用了变量)!【代码如下】1 awk '{s=0;for(i=2;i<=NF;i++){s+=$i};print $0 , s}'2 awk '{for(i=2;i<=NF;i++){a[NR]+=$i}print $0,a[NR]}'第二种方法优势在于;利用行数作为下标;这样不用每次都初始化a[NR]=0! 阅读全文 »
posted @ 2013-10-12 22:06 lottu 阅读(1768) 评论(0) 推荐(0) 编辑
摘要:正如需求如下:能否实现这样的功能,如下数据 6 7 8 9 10 16 17 22 23 24 25 26 28 29 30能输出每段连续数字的开始和结束数字,如 6 10 16 17 22 26 28 30【代码】我提供2种写法:写法一:awk '{print $0"\n"$0+1}' file|uniq -u|awk '{print;getline d;print d-1}'|uniq【解析】1:利用$0"\n"$0+1;例如前两行会打印出6"\n"7,7"\n"8;再利用uni 阅读全文 »
posted @ 2013-10-12 21:55 lottu 阅读(265) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示