sed d 命令有 2 个模式

sed d 命令有 2 个模式

我的 file.txt 包含以下内容:

abc
123
abcd
1234
abcde
12345

我运行了以下 sed 命令:

sed '/^[a-z]/,/[a-z]$/d' alphabet3.txt 

这难道不是意味着从第一行以字母开头到第一行以字母结尾删除吗?所以我期望我的输出是:

1234
abcde
12345

由于“abc”以字母开头,“abcd”以字母结尾。因此,删除了1-3。但我的实际输出是:

1234

我想我显然遗漏了一些东西。

答案1

GNU sed 手册

地址范围匹配从第一个地址匹配的位置开始的行,并且一直持续到第二个地址匹配的位置(包括)。

第一个地址才是真正重要的。第二个地址不需要匹配,在这种情况下范围将覆盖到文件末尾。

如果我们反转您的命令(仅打印匹配的行而不是删除它们),您会看到发生的情况:

$ sed -n '/^[a-z]/,/[a-z]$/p' bar
abc
123
abcd
abcde
12345

相关内容