![带管道 (|) 的 csplit 正则表达式](https://linux22.com/image/108545/%E5%B8%A6%E7%AE%A1%E9%81%93%20(%7C)%20%E7%9A%84%20csplit%20%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F.png)
我想通过正则表达式分割文件,我的文件格式如下
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
当前目录中指定的文件。