首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找正确的csplit正则表达式

查找正确的csplit正则表达式
EN

Stack Overflow用户
提问于 2010-12-01 19:09:53
回答 2查看 8.4K关注 0票数 14

我有一个文件,其中包含如下所示的几行:

代码语言:javascript
运行
复制
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,无关紧要)的每一行的文件。

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

代码语言:javascript
运行
复制
$ csplit -k input.txt /started/

然而,我期望的更多,可以在下面看到:

代码语言:javascript
运行
复制
$ grep -i started input.txt |wc -l
$ 146

正确的csplit命令是什么?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-01 19:35:13

只需在末尾添加{*}

代码语言:javascript
运行
复制
$ csplit -k input.txt /started/ {*}

手册页上写着:

代码语言:javascript
运行
复制
{*}    repeat the previous pattern as many times as possible.

演示:

代码语言:javascript
运行
复制
$ 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
票数 17
EN

Stack Overflow用户

发布于 2015-08-13 03:26:11

根据Open Group规范,csplit命令接受basic regular expressions

基本regex是完整正则表达式实现的有限子集。它们支持文字字符、星号(*)、点(.)、字符类(0-9)和锚点(^,$)。他们不支持一个或多个(+)或交替(a|b)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4323703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档