sed中指定地址区间
时间:2006-09-08 来源:lgfang
sed中指定地址区间
(last-edit-by: lgfang 09/08/2006 11:44:10>)
《sed与awk》第二版中文版77页中有如下描述:
sed命令可以指定零个、一个或两个地址。每个地址都是一个描述模式、行号或 者行寻址符号的正则表达式。... 如果指定了由逗号分隔的两个地址,那么命 令应用于匹配第一个地址的第一行和它后面的行,直到匹配第二个地址的行 (包括此行)。
一开始我理解错了,以为是“直到匹配第二个地址的行(包括此行)。”后就结束了,经过 试验才发现实际上是:
如果指定了由逗号分隔的两个地址,那么命令应用于匹配第一个地址的第一行和它后 面的行,直到匹配第二个地址的行(包括此行)。 如此循环不止。
例如: 对内容
pattern1 +
pattern2 +
pattern3 +
pattern1 +
pattern2 +
pattern3 +
应用命令
sed '/pattern1/,/pattern2/ s/+/-/' test.txt
输出为
pattern1 -
pattern2 -
pattern3 +
pattern1 -
pattern2 -
pattern3 +
如果想只对第一次匹配pattern1的行做操作,命令应该是
sed '0,/pattern1/ s/+/-/' test.txt
其结果为
pattern1 -
pattern2 +
pattern3 +
pattern1 +
pattern2 +
pattern3 +
相关阅读 更多 +