[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 1# 踏沙行


    sed 默认的命令执行范围是全局编辑的,如果不明确指定行的话,命令会在所有输入行上执行,如果想仅对其中部分行执行命令,可以使用地址限制。如果给了 2 个地址,即地址对(地址范围),则命令匹配的这个地址范围内执行,但是需要注意的是:对于像 "addr1,addr2" 这种形式的地址匹配,如果addr1 匹配,则匹配成功,"开关"打开,在该行上执行命令,此时不管 addr2 是否匹配,即使 addr2 在 addr1 这一行之前;接下来读入下一行,如果addr2 匹配,则执行命令,同样开关"关闭";如果 addr2 在 addr1 之后,则一直处理到匹配为止,换句话说,如果 addr2 一直不匹配,则开关一直不关闭,因此会持续执行命令到最后一行。

第四行过后,进行第二次匹配,以第一个地址匹配开始,不满足第二个条件,继续执行到文件结束。
我就是我,不一样的烟火!

TOP

回复 4# Batcher


    第一个开启多条命令执行:
  1. sed -n "/at/,/is/p; /is/q" 1.txt
复制代码
第二个是或的关系,支持扩展正则表达式 | 符号,需用-r 选项:
  1. sed -n -r "/(at|is)/p" 1.txt
复制代码
我就是我,不一样的烟火!

TOP

返回列表