免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: levinswong
打印 上一主题 下一主题

能把这段代码完全看懂,就可以说你掌握sed了 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2010-04-03 13:32 |只看该作者
for file是干什么的?
kingoftime3 发表于 2010-04-03 13:25



    相当于for file in $*

论坛徽章:
0
22 [报告]
发表于 2010-04-03 13:40 |只看该作者
可以直接 用sed 命令输出吗??

能不能不用脚本, 其次, 请写出注释。。。

不然 严重鄙视你!!!!!

论坛徽章:
0
23 [报告]
发表于 2010-04-03 13:47 |只看该作者
回复 22# vitas333_cu


    鄙视与否是你个人问题。。。

论坛徽章:
0
24 [报告]
发表于 2010-04-03 13:55 |只看该作者
晕。。。。。。。

说说而已。。。

老大 就不能 解释下啊 。。 :)

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
25 [报告]
发表于 2010-04-03 14:05 |只看该作者
回复 24# vitas333_cu


顶楼最开始发帖的时候就注明代码的出处了,自己去看看就知道了,别乱鄙视人家。

论坛徽章:
0
26 [报告]
发表于 2010-04-03 14:14 |只看该作者
回复  vitas333_cu


顶楼最开始发帖的时候就注明代码的出处了,自己去看看就知道了,别乱鄙视人家。
Shell_HAT 发表于 2010-04-03 14:05



    大侠说的对,其实就算我在这里通篇解释一遍,如果没有相关基础也是没有用的。建议从基础扎扎实实学起,看懂这个不难,能根据应用熟练使用那些高级命令就不容易了。

论坛徽章:
0
27 [报告]
发表于 2010-04-03 15:17 |只看该作者
我想到 另外 一个思路


读取文件
将换行 替换成空格
在点后面加换行 这样每句话 一行
最后搜索关键字



嘻嘻  搞定

论坛徽章:
0
28 [报告]
发表于 2010-04-03 15:28 |只看该作者
回复 27# vitas333_cu


    不错,是一种方法。
不过效率会很低。
还有,一句话不一定都是以.结束的,而且如果正好文本的一行是以.或!或?等结束的话,还要将换行符替换成空格,然后再替换回换行符。

论坛徽章:
0
29 [报告]
发表于 2010-04-03 15:39 |只看该作者
回复  vitas333_cu


    不错,是一种方法。
不过效率会很低。
还有,一句话不一定都是以.结束的,而 ...
levinswong 发表于 2010-04-03 15:28



啊 !!!!!!!!!!!!!!

又头疼了。。。。


可是你那个脚本 看不懂啊 !!!

我大致想的是 用 N 衔接 下一行 , 然后 再搜索 关键地址。。

论坛徽章:
0
30 [报告]
发表于 2010-04-03 18:06 |只看该作者
本帖最后由 kingoftime3 于 2010-04-04 23:39 编辑

大体过程:

  1.    1. #!/bin/sh
  2.    2.

  3.    3. search=$1
  4.    4. shift
  5.    5. for file
  6.    6. do
  7.    7. sed '
  8.    8. /'"$search"'/b     ###如果此行可以匹配,退出进入下一行,以下处理不能用一行匹配行
  9.    9. $!N
  10.   10. h
  11.   11. s/.*\n//              ###由于上面将两行合并了,现在要判断合并中的第二行是否可以单行匹配
  12.   12. /'"$search"'/b     ###若可以则退出进入下一行
  13.   13. g
  14.   14. s/ *\n/ /                ####将合并中的两行中第一行最后的空格及换行符删除
  15.   15. /'"$search"'/{        ####此处是用两行可以匹配的情形
  16.   16. g
  17.   17. b
  18.   18. }
  19.   19. g
  20.   20. D' $file            ####D是删除两行中的第一行,因为第二行有可能和第三行组合得到匹配
  21.   21. done
复制代码
也就是用到hold space来控制程序流程,大家不用被它的长度吓到:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP