首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >根据分隔符将一个文件拆分为多个文件

根据分隔符将一个文件拆分为多个文件
EN

Stack Overflow用户
提问于 2012-07-03 23:07:03
回答 10查看 91.9K关注 0票数 97

我在每个section...need后面都有一个以-|为分隔符的文件,以便使用unix为每个节创建单独的文件。

输入文件示例

代码语言:javascript
复制
wertretr
ewretrtret
1212132323
000232
-|
ereteertetet
232434234
erewesdfsfsfs
0234342343
-|
jdhg3875jdfsgfd
sjdhfdbfjds
347674657435
-|

文件%1中的预期结果

代码语言:javascript
复制
wertretr
ewretrtret
1212132323
000232
-|

文件2中的预期结果

代码语言:javascript
复制
ereteertetet
232434234
erewesdfsfsfs
0234342343
-|

文件3中的预期结果

代码语言:javascript
复制
jdhg3875jdfsgfd
sjdhfdbfjds
347674657435
-|
EN

回答 10

Stack Overflow用户

发布于 2012-07-04 00:07:14

一个单独的线条,不需要编程。( regexp等除外)

代码语言:javascript
复制
csplit --digits=2  --quiet --prefix=outfile infile "/-|/+1" "{*}"

测试平台:csplit (GNU coreutils) 8.30

有关在Apple Mac上使用的说明

“对于OS X用户,请注意操作系统附带的csplit版本不起作用。您需要的是称为gcsplit的核心版本(可通过Homebrew安装)。”-- @Danial

“只是添加一下,你可以获得OS X的版本(至少在高塞拉)。你只需要稍微调整一下参数。看起来不起作用的功能是"{*}",我必须具体说明分隔符的数量,并且需要添加-k,以避免在找不到最终分隔符的情况下删除所有输出文件。此外,如果你想使用--digits,你需要使用-n。”- @Pebbl

票数 103
EN

Stack Overflow用户

发布于 2012-07-04 00:04:40

代码语言:javascript
复制
awk '{f="file" NR; print $0 " -|"> f}' RS='-\\|'  input-file

说明(编辑):

RS是记录分隔符,这个解决方案使用了gnu awk扩展,允许它是多个字符。NR是记录号。

print语句将后跟" -|"的记录打印到一个文件中,该文件的名称中包含记录号。

票数 43
EN

Stack Overflow用户

发布于 2012-07-03 23:42:43

Debian有csplit,但我不知道这是否在所有/大多数/其他发行版中都是通用的。如果没有,那么追踪源代码并编译它应该不会太难……

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

https://stackoverflow.com/questions/11313852

复制
相关文章

相似问题

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