【发布时间】:2020-01-07 22:03:39
【问题描述】:
我正在使用sed 删除配置文件中的标签,但我无意中发现了一个问题,我将使用一个基本示例:
numbers.txt 文件内容:
0
1
2
3
4
5
6
7
8
9
在两个数字之间删除(包括数字本身):
sed '/4/,/6/d' numbers.txt
产量(如预期):
0
1
2
3
7
8
9
但是,如果我从 numbers.txt 中删除 6 行,我希望相同的命令产生 all of numbers.txt,因为它找不到第二个模式,而是简单地删除4 行之后的所有内容(可能是因为搜索 6 到达了文件末尾,所以这就是它返回的值):
0
1
2
3
我的问题是:我如何修改sed 语句以在这种情况下不做任何事情?
【问题讨论】:
-
为什么会这样?您看到的行为并不特别出人意料。
-
这不是在我研究了 sed 的内部流控制如何工作之后,如果您熟悉它,我可以看到您会怎么想,但我将语法解释为“查找范围以 '4' 开头并以 '6' 结尾,然后删除行”
标签: sed