免费注册 查看新帖 |

Chinaunix

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

怎么去掉多余的行?请帮忙 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-18 10:44 |只看该作者 |倒序浏览
请教:如何去掉下面文件1 多余的文字,转换成 文件2的形式呢?

文件1:

  1. 18776
  2. CLOSED
  3. 18783
  4. CLOSED
  5. 1881
  6. STARTED
  7. 18817
  8. RESOLVED
  9. 18835
  10. REOPENED
  11. in the state UNCONFIRMED, is there a method to this maddness?
  12. Regarding the UNCONFIRMED state of this (and other) issues: Normally
  13. But why set to RESOLVED INVALID?
  14. 18843
  15. CLOSED
  16. 21385
  17. CLOSED
  18. Ho do you produce this NEW
  19. NEW FIXED seems to result from reassigning fixed issues.
  20. 21427
  21. RESOLVED
  22. 21441
  23. RESOLVED
  24. 21677
  25. CLOSED
  26. 21678
  27. REOPENED
  28. as RESOLVED/FIXED, because, due to the presence of
  29. 21906
  30. CLOSED
复制代码


文件2:

  1. 18776
  2. CLOSED
  3. 18783
  4. CLOSED
  5. 1881
  6. STARTED
  7. 18817
  8. RESOLVED
  9. 18835
  10. REOPENED
  11. 18843
  12. CLOSED
  13. 21385
  14. CLOSED
  15. 21427
  16. RESOLVED
  17. 21441
  18. RESOLVED
  19. 21677
  20. CLOSED
  21. 21678
  22. REOPENED
  23. 21906
  24. CLOSED
复制代码


多谢多谢

论坛徽章:
0
2 [报告]
发表于 2004-04-18 10:51 |只看该作者

怎么去掉多余的行?请帮忙

try :

grep -E '^[0-9]\{1,\}$|^[A-Z]*ED$' ur_file

论坛徽章:
0
3 [报告]
发表于 2004-04-18 11:01 |只看该作者

怎么去掉多余的行?请帮忙

  1. $grep -A1 [0-9] a|sed '/--/d'
  2. 18776
  3. CLOSED
  4. 18783
  5. CLOSED
  6. 1881
  7. STARTED
  8. 18817
  9. RESOLVED
  10. 18835
  11. REOPENED
  12. 18843
  13. CLOSED
  14. 21385
  15. CLOSED
  16. 21427
  17. RESOLVED
  18. 21441
  19. RESOLVED
  20. 21677
  21. CLOSED
  22. 21678
  23. REOPENED
  24. 21906
  25. CLOSED
复制代码

论坛徽章:
0
4 [报告]
发表于 2004-04-18 11:03 |只看该作者

怎么去掉多余的行?请帮忙

[quote]原帖由 "john_student"]' ur_file[/quote 发表:

your script is not work
try :
  1. awk '/^[0-9]/||/^([A-Z])+ED/' file
复制代码

论坛徽章:
0
5 [报告]
发表于 2004-04-18 12:06 |只看该作者

怎么去掉多余的行?请帮忙

对grep的匹配表达式真的搞不懂,
特别对^,$,{,},|的使用,还有加不加\的区别。

另外也没留意到每行末尾的空格。

改用sed了:

  1. sed -n '/^[0-9]\+[ ]*$\|^[A-Z]\+ED[ ]*$/p'  ur_file
复制代码

论坛徽章:
0
6 [报告]
发表于 2004-04-18 12:17 |只看该作者

怎么去掉多余的行?请帮忙

[quote]原帖由 "john_student"][/quote 发表:

这个咋样? 一个while搞定
  1. while read i;do ((${#i}<=8))&&echo $i;done<file
  2. 18776
  3. CLOSED
  4. 18783
  5. CLOSED
  6. 1881
  7. STARTED
  8. 18817
  9. RESOLVED
  10. 18835
  11. REOPENED
  12. 18843
  13. CLOSED
  14. 21385
  15. CLOSED
  16. 21427
  17. RESOLVED
  18. 21441
  19. RESOLVED
  20. 21677
  21. CLOSED
  22. 21678
  23. REOPENED
  24. 21906
  25. CLOSED
复制代码
btw:纯属即兴

论坛徽章:
0
7 [报告]
发表于 2004-04-18 15:11 |只看该作者

怎么去掉多余的行?请帮忙

长见识!

论坛徽章:
0
8 [报告]
发表于 2004-04-18 15:22 |只看该作者

怎么去掉多余的行?请帮忙

这个很牵强:
  1. sed 's/ *//' file|grep -v ' '
复制代码

论坛徽章:
0
9 [报告]
发表于 2004-04-18 15:44 |只看该作者

怎么去掉多余的行?请帮忙

楼上诸位,bjgirl的我没有看懂,john的判断ED不见得是个好办法。我想楼主是想要数字串紧接的一行。用sed有更好的办法的:

  1. sed -n '/^[0-9]\{1,\}$/{N;p;}' aaa
复制代码

aaa是原数据文件。
还有,
原帖由 "bjgirl" 发表:

your script is not work

语法错误,应该是"does not work"吧,呵呵。

论坛徽章:
0
10 [报告]
发表于 2004-04-18 16:06 |只看该作者

怎么去掉多余的行?请帮忙

原帖由 "forest077" 发表:

语法错误,应该是"does not work"吧,呵呵。

我的那个while的,是根据$i的长度来判断,有些牵强
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP