免费注册 查看新帖 |

Chinaunix

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

[文本处理] 来看sed 的例子,请帮忙解释下 [复制链接]

论坛徽章:
13
CU大牛徽章
日期:2013-03-14 14:14:082016科比退役纪念章
日期:2016-07-22 11:15:35数据库技术版块每日发帖之星
日期:2016-05-27 06:20:002015亚冠之吉达阿赫利
日期:2015-08-05 10:06:542015年亚洲杯之韩国
日期:2015-04-01 16:05:42双鱼座
日期:2014-11-13 11:04:24丑牛
日期:2014-07-25 17:29:54子鼠
日期:2014-04-25 12:25:45丑牛
日期:2014-04-17 08:35:48巨蟹座
日期:2014-04-16 16:50:05CU大牛徽章
日期:2013-03-14 14:14:29CU大牛徽章
日期:2013-03-14 14:14:26
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-30 11:02 |只看该作者 |倒序浏览
本帖最后由 hmchzb19 于 2013-10-30 11:14 编辑
  1. sed  -n '3,/sbin/p' /etc/passwd
  2. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  3. adm:x:3:4:adm:/var/adm:/sbin/nologin
  4. [root@netuf20 ~]# sed  -n '3,/sbin/a$/**joke**/' /etc/passwd
  5. $/**joke**/
  6. $/**joke**/
复制代码
第一个sed, 第一行就有sbin匹配到了了,为什么打印了2行?


第二个,a$/**joke**/a是什么意思append的意思,应该是在行尾添加**joke**,怎么会变成了打印出来的这个?

论坛徽章:
14
15-16赛季CBA联赛之辽宁
日期:2019-06-16 15:47:3515-16赛季CBA联赛之广夏
日期:2016-08-13 21:24:352015亚冠之武里南联
日期:2015-07-07 17:37:372015亚冠之萨济拖拉机
日期:2015-07-06 17:07:482015亚冠之全北现代
日期:2015-06-04 13:54:272015亚冠之城南
日期:2015-05-21 15:43:212015年亚洲杯之伊朗
日期:2015-04-25 18:20:362015年亚洲杯之伊朗
日期:2015-04-20 16:06:052015年亚洲杯之科威特
日期:2015-03-07 12:51:26丑牛
日期:2014-12-30 10:26:38申猴
日期:2014-09-28 22:40:18金牛座
日期:2014-09-13 21:12:22
2 [报告]
发表于 2013-10-30 11:14 |只看该作者
回复 1# hmchzb19


    同问~

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
3 [报告]
发表于 2013-10-30 11:17 |只看该作者
回复 1# hmchzb19


    p没了

论坛徽章:
13
CU大牛徽章
日期:2013-03-14 14:14:082016科比退役纪念章
日期:2016-07-22 11:15:35数据库技术版块每日发帖之星
日期:2016-05-27 06:20:002015亚冠之吉达阿赫利
日期:2015-08-05 10:06:542015年亚洲杯之韩国
日期:2015-04-01 16:05:42双鱼座
日期:2014-11-13 11:04:24丑牛
日期:2014-07-25 17:29:54子鼠
日期:2014-04-25 12:25:45丑牛
日期:2014-04-17 08:35:48巨蟹座
日期:2014-04-16 16:50:05CU大牛徽章
日期:2013-03-14 14:14:29CU大牛徽章
日期:2013-03-14 14:14:26
4 [报告]
发表于 2013-10-30 11:25 |只看该作者
本帖最后由 hmchzb19 于 2013-10-30 11:28 编辑
  1. sed   '3,/sbin/a$/**joke**/' /etc/passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. bin:x:1:1:bin:/bin:/sbin/nologin
  4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  5. $/**joke**/
  6. adm:x:3:4:adm:/var/adm:/sbin/nologin
  7. $/**joke**/
  8. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  9. sync:x:5:0:sync:/sbin:/bin/sync
  10. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  11. halt:x:7:0:halt:/sbin:/sbin/halt
  12. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  13. uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
  14. operator:x:11:0:operator:/root:/sbin/nologin
  15. games:x:12:100:games:/usr/games:/sbin/nologin
  16. gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
  17. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  18. nobody:x:99:99:Nobody:/:/sbin/nologin
  19. dbus:x:81:81:System message bus:/:/sbin/nologin
  20. rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
  21. usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
  22. avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
  23. hsqldb:x:96:96::/var/lib/hsqldb:/sbin/nologin
  24. nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
  25. oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin
  26. vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
  27. rtkit:x:499:496:RealtimeKit:/proc:/sbin/nologin
  28. abrt:x:173:173::/etc/abrt:/sbin/nologin
  29. pegasus:x:66:65:tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
  30. cimsrvr:x:498:500:tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
  31. apache:x:48:48:Apache:/var/www:/sbin/nologin
  32. saslauth:x:497:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
  33. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
  34. haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
  35. ntp:x:38:38::/etc/ntp:/sbin/nologin
  36. amandabackup:x:33:6:Amanda user:/var/lib/amanda:/bin/bash
  37. mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
  38. avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
  39. rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
  40. nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
  41. pulse:x:496:493:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
  42. webalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologin
  43. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
  44. postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
  45. tcpdump:x:72:72::/:/sbin/nologin
  46. gdm:x:42:42::/var/lib/gdm:/sbin/nologin
  47. nslcd:x:65:55:LDAP Client User:/:/sbin/nologin
  48. oracle:x:500:501::/home/oracle:/bin/bash
复制代码
我把N 去掉很搞笑,a$ 不是应该在行尾添加么?
结都变成了添加了1行。
第一个问题LS 给回答下呗?
我猜打印出的结果第一行是第三行,所以打印出来,第4行则有第一个匹配的sbin,然后也被打印出来,这说明这个匹配并不是贪婪的。

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
5 [报告]
发表于 2013-10-30 11:31 |只看该作者
第一个,目测匹配到的那两行分别是/etc/passwd的第3行和第四行。

第二个,因为你启动了-n选项(静默模式),却没有用p命令,所以标准输出的只有你添加的内容,a命令就是在匹配行后面添加一行新内容。

论坛徽章:
13
CU大牛徽章
日期:2013-03-14 14:14:082016科比退役纪念章
日期:2016-07-22 11:15:35数据库技术版块每日发帖之星
日期:2016-05-27 06:20:002015亚冠之吉达阿赫利
日期:2015-08-05 10:06:542015年亚洲杯之韩国
日期:2015-04-01 16:05:42双鱼座
日期:2014-11-13 11:04:24丑牛
日期:2014-07-25 17:29:54子鼠
日期:2014-04-25 12:25:45丑牛
日期:2014-04-17 08:35:48巨蟹座
日期:2014-04-16 16:50:05CU大牛徽章
日期:2013-03-14 14:14:29CU大牛徽章
日期:2013-03-14 14:14:26
6 [报告]
发表于 2013-10-30 11:33 |只看该作者
回复 5# yestreenstars


    a$不是应该是在行尾添加么?

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
7 [报告]
发表于 2013-10-30 11:36 |只看该作者
回复 6# hmchzb19
a命令是在匹配行后添加一行,而不是在行尾添加。目测这才是你要的:
  1. sed '3,/sbin/s#$#/**joke**/#'
复制代码

论坛徽章:
0
8 [报告]
发表于 2013-10-30 11:38 |只看该作者
本帖最后由 trdcaz 于 2013-10-30 11:41 编辑

man sed

       a \
       text   Append text, which has each embedded newline preceded by a backslash.

回复 6# hmchzb19


   

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
9 [报告]
发表于 2013-10-30 13:04 |只看该作者
本帖最后由 yinyuemi 于 2013-10-30 13:04 编辑

回复 4# hmchzb19

第一个问题
    http://bbs.chinaunix.net/thread-3557086-1-1.html

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
10 [报告]
发表于 2013-10-30 13:11 |只看该作者
回复 9# yinyuemi
没这么玄乎,结果很正常,刚好第四行就匹配到sbin了,所以就打印了第3行和第4行。

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP