我的 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
地址范围匹配从第一个地址匹配的位置开始的行,并且一直持续到第二个地址匹配的位置(包括)。
第一个地址才是真正重要的。第二个地址不需要匹配,在这种情况下范围将覆盖到文件末尾。
如果我们反转您的命令(仅打印匹配的行而不是删除它们),您会看到发生的情况:
$ sed -n '/^[a-z]/,/[a-z]$/p' bar
abc
123
abcd
abcde
12345