免费注册 查看新帖 |

Chinaunix

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

求助:一个关于隔行删除的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-20 11:54 |只看该作者 |倒序浏览
俺是个菜鸟,刚刚学会用UNIX,但是有很多问题要解决。

     464646464654654654646465464
 1  0009   11212312   211231212  12123132213
 2  0006   21213213   213212123  21213321321
 3  0005   12312213   121232313  21312312123
           第1页
 4  0007   12123213   213321213  12123231231
 5  0001   12123321   122133212  12213321321
 6  0002   21123321   113213212  12321321323
            第2页
 7  0004   22112321   221323121  12321332123
 8  0003   45546456   546456456  45645654654
 9  0008   21213321   122133121  12213213123
  第3页 121212312312323121321321332123123
有这样一个文件,我现在跟据第2列进行排序,而且要每隔3行删除下一行,但不能把最后一行删除掉。
  排序我以解决了,我用一个笨方法,sort -k 2
  但是每隔3行,删除一个第4行,如果最后一行在第4行上,不要删除,这个我就有点,呵呵呵不会了,各位那位大哥说一下。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-07-20 13:28 |只看该作者

求助:一个关于隔行删除的问题

嗯?
你是否要刪 4 8 12 16 .... 這些行? (第一行不刪?)
若是, 在 linux 下可試試:
sort -k 2 file | sed '0~4d' > new.file
[ $(($(grep -c '.*' file)%4)) -eq 0 ] && sort -k 2 file | tail -1 >> new.file

论坛徽章:
0
3 [报告]
发表于 2005-07-20 15:11 |只看该作者

求助:一个关于隔行删除的问题

我说的不明白吗,不是4.8.12。那是一个举列说明,也就是每一隔一个同样的行数,就删除下一行。呵我是在UNIX下用的啊,你那个行吗

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
4 [报告]
发表于 2005-07-20 15:52 |只看该作者

求助:一个关于隔行删除的问题

说的不明白,又说了一遍俺还是没看懂

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2005-07-20 16:08 |只看该作者

求助:一个关于隔行删除的问题

答案在 sed '0~4d' 裡的 4 裡... 你可改為你想要的 n 行...
剩下的自己想吧, 找一下我上一篇的 4 字出現在哪....

论坛徽章:
0
6 [报告]
发表于 2005-07-20 16:22 |只看该作者

求助:一个关于隔行删除的问题

waker
不会吧,我的表达能力不会那么差吧。

就是说每隔一定的行数,就删除下一行,但不能删除最后一行。

论坛徽章:
0
7 [报告]
发表于 2005-07-20 16:44 |只看该作者

求助:一个关于隔行删除的问题

awk '{if($0~/第/){a=$0}else{print}} END{if(!(NR%4))print a}' delrow.dat

NR%4中,4为间隔的行数

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
8 [报告]
发表于 2005-07-20 16:49 |只看该作者

求助:一个关于隔行删除的问题

n~m是咱们gsed特有的吧?

试试 awk
awk '(NR%4!=0){print}
END{if(NR%4==0)print}' file

关于表达力的问题,只能肯定的回答:是的

论坛徽章:
0
9 [报告]
发表于 2005-07-22 09:27 |只看该作者

求助:一个关于隔行删除的问题

呵呵呵 ,不会吧,我表达能差吗。
呵呵 我试一下,还行,可以用,不错,谢谢.
但如果最后一行刚好是4的倍数,不会也一起给删了吧。我是要保留最后一行的。

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
10 [报告]
发表于 2005-07-22 09:57 |只看该作者

求助:一个关于隔行删除的问题

  1. seq 12|awk '(NR%4!=0){print}
  2. END{if(NR%4==0)print}'
  3. 1
  4. 2
  5. 3
  6. 5
  7. 6
  8. 7
  9. 9
  10. 10
  11. 11
  12. 12
复制代码

12有被删么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP