免费注册 查看新帖 |

Chinaunix

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

[文本处理] linux sed 一个脚本删除文件后10行 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之八一
日期:2017-02-21 17:19:04
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-06-02 22:16 |只看该作者 |倒序浏览
sed 的一个脚本,取文件中的后10行,有一句没看明白。
sed '{
:start
$q
N
11,$D
b start
}' /etc/passwd

其中11,$D这一句,这个第11行到末尾行$ 的行数指的是文件/etc/passwd的行数还是保存在模式空间的行数?
为什么要写成11,$D,仅仅写11D不就可以了,每次模式空间保存到原始文件中第11行的时候删模式空间的行,仅仅删除到\n的第一行

求大家帮忙,谢谢

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
2 [报告]
发表于 2015-06-02 22:29 |只看该作者
回复 1# psmzs

sed '{
:start #定义start标签
$q  #最后一行时退出,此时模式空间还有最后的10行,由于sed没有用-n选项,故默认打印模式空间的内容,即最后10行
N   #读取下一行追加到模式空间
11,$D #从第11行开始删除第1行,第12行删除2行,以此类推,目的是在到最后一行时,确保模式空间保存最后的10行
b start #无条件跳转到start标签,第1-10行才会运行到这里
}' /etc/passwd

上面说的第11行是输入文件的行数,不是指模式空间的。。。

论坛徽章:
1
15-16赛季CBA联赛之八一
日期:2017-02-21 17:19:04
3 [报告]
发表于 2015-06-02 22:37 |只看该作者
为什么要11,$D    仅仅11D不可以吗

论坛徽章:
1
15-16赛季CBA联赛之八一
日期:2017-02-21 17:19:04
4 [报告]
发表于 2015-06-02 22:37 |只看该作者
回复 2# songyc_2015



为什么要11,$D    仅仅11D不可以吗


   

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
5 [报告]
发表于 2015-06-02 22:56 |只看该作者
回复 4# psmzs

你试下就知道了,如果是11D,那么sed处理到文件最后一行时,模式空间的内容是文件的第2行到最后一行了。。。

论坛徽章:
1
15-16赛季CBA联赛之八一
日期:2017-02-21 17:19:04
6 [报告]
发表于 2015-06-02 23:07 |只看该作者
回复 5# songyc_2015


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP