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



我有很多文件看起来像:

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

演示

这可能对你有用(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使用最后一个regexp,即/2019-10-29-12-00/,如果为true,则中断为以下循环名称,即:aQ终止所有sed命令,但不打印当前行。{...}将sed命令限制为以前的regexp。

最新更新