带管道 (|) 的 csplit 正则表达式

带管道 (|) 的 csplit 正则表达式

我想通过正则表达式分割文件,我的文件格式如下

0|t| lorem ...
some text 
138|t| title 
some text 

如果我执行,egrep "[0-9]+\|t\|" file | wc -l它会正确计算出现次数,但如果我执行csplit filename /[0-9]+\|t\|/,它会说找不到匹配项,并且不会拆分文件。

模式中的管道似乎存在一些问题,但无法找到解决方案。

答案1

你必须意识到正csplit则表达式是基本正则表达式 (BRE)因此不会理解+ \|等等。

只需这样做:

csplit yourfile '%^[0-9]*|t|%' '/^[0-9]*|t|/' '{*}'

然后查找xxNN当前目录中指定的文件。

相关内容