我有一个以 -|
作为分隔符的文件在每个部分之后...需要使用 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
-|
最佳答案
一个类轮,没有编程。 (除了正则表达式等)
csplit --digits=2 --quiet --prefix=outfile infile "/-|/+1" "{*}"
测试:
csplit (GNU coreutils) 8.30
Apple Mac 使用注意事项
“对于 OS X 用户,请注意操作系统附带的 csplit
版本不起作用。您需要 coreutils 中的版本(可通过 Homebrew 安装),称为 gcsplit
。” — @Danial
“只是补充一下,你可以让 OS X 的版本工作(至少在 High Sierra 上)。你只需要稍微调整一下参数 csplit -k -f=outfile infile "/-\|/+1""{3}"
。似乎不起作用的功能是 "{*}"
,我必须具体说明分隔符的数量,以及需要添加 -k
以避免在找不到最终分隔符时删除所有输出文件。此外,如果您想要 --digits
,则需要使用 -n
代替。” — @Pebbl
关于linux - 根据分隔符将一个文件拆分为多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11313852/