我想使用 sed 三个命令之一(数字范围)

Don*_*Bit 0 sed text-formatting

有一个文本文件。(test.txt)

1970-01-01
1971-01-01
1972-01-01
1973-01-01
1974-01-01
....
1993-01-01
1994-01-01
1995-01-01
1996-01-01
...
2015-01-01
2016-01-01
Run Code Online (Sandbox Code Playgroud)

我想从 1970 年清除 1995 年上面的文本行。

下面是我做的 sed 命令。

sed -i '/197[0-9]/d' test.txt
sed -i '/198[0-9]/d' test.txt
sed -i '/199[0-5]/d' test.txt
Run Code Online (Sandbox Code Playgroud)

有没有办法将三个命令合并为一个命令 sed?

Ste*_*ris 8

由于您的文件似乎已排序,因此您可以从头到尾删除

例如

sed -i '1,/^1995/d' test.txt
Run Code Online (Sandbox Code Playgroud)

如果日期在 1970 年之前开始,则

sed -i '/^1970/,/^1995/d' test.txt
Run Code Online (Sandbox Code Playgroud)

如果您的文件按顺序,那么就没有简单的正则表达式(有一个很长很无聊的)可以匹配所有行,但是您可以指定多个

sed -i -e '/^19[78][0-9]/d' -e '/^199[0-5]/d' test.txt
Run Code Online (Sandbox Code Playgroud)