我在每个section...need后面都有一个以-|
为分隔符的文件,以便使用unix为每个节创建单独的文件。
输入文件示例
wertretr
ewretrtret
1212132323
000232
-|
ereteertetet
232434234
erewesdfsfsfs
0234342343
-|
jdhg3875jdfsgfd
sjdhfdbfjds
347674657435
-|
文件%1中的预期结果
wertretr
ewretrtret
1212132323
000232
-|
文件2中的预期结果
ereteertetet
232434234
erewesdfsfsfs
0234342343
-|
文件3中的预期结果
jdhg3875jdfsgfd
sjdhfdbfjds
347674657435
-|
发布于 2012-07-04 00:07:14
一个单独的线条,不需要编程。( regexp等除外)
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
发布于 2012-07-04 00:04:40
awk '{f="file" NR; print $0 " -|"> f}' RS='-\\|' input-file
说明(编辑):
RS
是记录分隔符,这个解决方案使用了gnu awk扩展,允许它是多个字符。NR
是记录号。
print语句将后跟" -|"
的记录打印到一个文件中,该文件的名称中包含记录号。
发布于 2012-07-03 23:42:43
Debian有csplit
,但我不知道这是否在所有/大多数/其他发行版中都是通用的。如果没有,那么追踪源代码并编译它应该不会太难……
https://stackoverflow.com/questions/11313852
复制相似问题