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

标签 linux unix awk split

我有一个以 -| 作为分隔符的文件在每个部分之后...需要使用 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/

相关文章:

linux - Dockerfile:QIODevice::seek:无法在顺序设备上调用搜索

linux - AWK 处理数据直到下一次匹配

linux - Bash 脚本记录平均 ping 时间,一天每 20 秒一次

bash - 查找多个文件的公共(public)行

linux - Ansible "missing become password"在一台机器上但不是另一台机器

python - 当 python 指向 python3 时,谷歌云 sdk 不工作

c++ - 如何从字符串路径中获取 dirent 结构?

linux - 我可以逐行读取hadoop文件吗

linux - 如何在 linux 中解码 base64 编码的行?

unix - 相当于 ftp put 和 append in scp