我有一个打印输出文件(uncomp.txt),其中包含换页。我尝试根据\f正则表达式匹配将单个文档拆分为多个文档,并输出带有epoch时间的文件。
我试过这个:
$ csplit --prefix=$(date +%s) -s /tmp/uncomp.txt "/%\f%/+1" "{*}"
还有这个
$ csplit --prefix=$(date +%s) -s /tmp/uncomp.txt "/\f/+1" "{*}"
甚至还有这个
$ csplit -s --prefix=$(date +%s) /tmp/uncomp.txt /\f/ {*}
但每次我都以一个文件结束。它显然没有接收\f正则表达式…我做错了什么?
3条答案
按热度按时间hgqdbh6s1#
bash解决方案
看起来
csplit
在它的正则表达式中需要一个文本formfeed。实现这一点的一种方法是使用bash的$'...'
结构:POSIX解决方案
如果你没有bash,你可以使用
printf
:或者,等价地:
hrysbysz2#
就像这样尝试,使用the standalone bash shell for windows
其中我通过按CTRL+L获得
^L
。对我很有效。yxyvkwin3#
我不相信你想要正则表达式后面的“+1”。对我来说,这会将每一页的第一行移到上一页。(顺便说一句,关于$'...'构造的解释,请在bash手册页中搜索字符串'ANSI C'。