显示文件中的元素直到文件中的限制值?

Display element from file until a limit value in the file?

我有很多文件看起来像:

2019-10-28-00-00;/dev/xxx;128.00;106.54;/var/x/x/xxx
2019-10-28-06-00;/dev/xxx;128.00;106.54;/var/x/x/xxx
2019-10-28-12-00;/dev/xxx;128.00;106.54;/var/x/x/xxx
2019-10-28-18-00;/dev/xxx;128.00;106.54;/var/x/x/xxx
2019-10-29-00-00;/dev/xxx;128.00;106.54;/var/x/x/xxx
2019-10-29-06-00;/dev/xxx;128.00;106.54;/var/x/x/xxx
2019-10-29-12-00;/dev/xxx;128.00;106.54;/var/x/x/xx
2019-10-29-18-00;/dev/xxx;128.00;21.46;/var/x/x/xxx
2019-10-30-00-00;/dev/xxx;128.00;21.46;/var/x/x/xxx

我想显示我的文件的内容,直到模式“2019-10-29-12-00”

我试过了:

sed -n '/2019-10-29-12-00/,/endif/p' file.txt

但是这个命令恰恰相反。

我不知道怎么...你有什么想法吗?

使用1,/pattern/p打印从头到尾的所有内容。

sed -n '1,/2019-10-29-12-00/p' file.txt

DEMO

这可能适合您 (GNU sed):

sed '/2019-10-29-12-00/q' file

这将打印直到并包括 2019-10-29-12-00

的每一行
sed '/2019-10-29-12-00/Q' file

这将打印每一行,但不包括 2019-10-29-12-00

编辑:根据用户评论。

sed '/2019-10-29-12-00/{:a;n;//ba;Q}' file

找到包含 019-10-29-12-00 的行打印它并获取下一行并重复直到文件末尾或不包含 019-10-29-12-00 的行。 :a 是循环开始的名称,n 命令打印当前行并获取下一行(或者如果文件结束,终止所有 sed 命令),//ba 使用最后一个正则表达式,即 /2019-10-29-12-00/,如果为真,则中断到以下循环名称,即 :aQ 终止所有 sed 命令但不打印当前行。 {...} 将 sed 命令限制为前面的正则表达式。