本文介绍了为 csplit 寻找正确的正则表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含以下几行的文件:

I have a file that contains several lines like these:

1291126929200 started 88 videolist15.txt 4 Good 4
1291126929250 59.875 29.0 29.580243595150186 43.016096916037604
1291126929296 59.921 29.0 29.52749417740926 42.78632483544682
1291126929359 59.984 29.0 29.479540161281143 42.56031951027556
1291126929437 60.046 50.0 31.345036510255586 42.682281485516945
1291126932859 started 88 videolist15.txt 5 Good 4

我想为包含 started(或 videolist,无所谓)的每一行拆分文件.

I want to split the files for every line that contains started (or videolist, does not matter).

以下命令仅生成 2 个输出文件:

The following command only produces 2 output files:

$ csplit -k input.txt /started/

然而,我期待更多,如以下所示:

However I expect a lot more, as can be seen in:

$ grep -i started input.txt |wc -l
$ 146

什么是正确的 csplit 命令?

What would be the correct csplit command?

谢谢

推荐答案

只需在最后添加{*}:

$ csplit -k input.txt /started/ {*}

手册页说:

{*}    repeat the previous pattern as many times as possible.

演示:

$ cat file
1
foo
2
foo
3
foo
$ csplit -k file /foo/ {*}
2
6
6
4
$ ls -tr xx*
xx03  xx02  xx01  xx00
$ csplit --version
csplit (GNU coreutils) 7.4

这篇关于为 csplit 寻找正确的正则表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-24 02:48