首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在带有Form Feed Regex的Bash脚本中使用csplit

在带有Form Feed Regex的Bash脚本中使用csplit
EN

Stack Overflow用户
提问于 2016-04-29 03:19:25
回答 2查看 434关注 0票数 0

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

我试过了:

代码语言:javascript
复制
$ csplit --prefix=$(date +%s) -s  /tmp/uncomp.txt "/%\f%/+1" "{*}"

还有这个:

代码语言:javascript
复制
$ csplit --prefix=$(date +%s) -s  /tmp/uncomp.txt "/\f/+1" "{*}"

甚至是这样:

代码语言:javascript
复制
$ csplit -s  --prefix=$(date +%s) /tmp/uncomp.txt /\f/ {*}

但每次我都会得到一个单独的文件。很明显它没有提取\f正则表达式...我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2016-04-29 04:05:38

bash解决方案

看起来csplit在它的正则表达式中需要一个文本表单提要。实现这一点的一种方法是使用bash的$'...'构造:

代码语言:javascript
复制
csplit --prefix=$(date +%s) -s  uncomp.txt $'/\f/+1' "{*}"

POSIX解决方案

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

代码语言:javascript
复制
csplit --prefix=$(date +%s) -s  uncomp.txt "/$(printf "\f")/+1" "{*}"

或者,等效地:

代码语言:javascript
复制
csplit --prefix=$(date +%s) -s  uncomp.txt "$(printf "/\f/+1")" "{*}"
票数 1
EN

Stack Overflow用户

发布于 2017-07-25 18:07:31

我试着这样做,使用the standalone bash shell for windows

代码语言:javascript
复制
csplit -z --prefix=Stored dumpstored.sql /^L/ "{*}"

我通过按CTRL+L获得了^L,它对我很有效。

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

https://stackoverflow.com/questions/36923666

复制
相关文章

相似问题

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