0

我有一个包含换页的打印输出文件 (uncomp.txt)。我正在尝试根据 \f 正则表达式匹配将单个文档拆分为多个文档,并输出带有纪元时间的文件。

我试过这个:

$ 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 正则表达式......我做错了什么?

4

2 回答 2

1

重击解决方案

似乎csplit需要在其正则表达式中使用文字形式的馈送。实现这一目标的一种方法是使用 bash 的$'...'构造:

csplit --prefix=$(date +%s) -s  uncomp.txt $'/\f/+1' "{*}"

POSIX 解决方案

如果你没有 bash,你可以使用printf

csplit --prefix=$(date +%s) -s  uncomp.txt "/$(printf "\f")/+1" "{*}"

或者,等效地:

csplit --prefix=$(date +%s) -s  uncomp.txt "$(printf "/\f/+1")" "{*}"
于 2016-04-28T20:05:37.687 回答
0

就像这样尝试过,使用Windows 的独立 bash shell

csplit -z --prefix=Stored dumpstored.sql /^L/ "{*}"

^L通过按 CTRL+L 获得的位置。它对我有用。

于 2017-07-25T10:07:30.653 回答