【问题标题】:shell : csplit command外壳:csplit 命令
【发布时间】:2015-10-19 09:26:04
【问题描述】:

我正在尝试对 700 Mo 的文件使用 csplit 命令。 我想将文件拆分为 30 个较小的文件,并尊重我用来启动新文件的标签名称。

<head>
 <test>1 </test>
</head>

<head>
 <test>2 </test>
</head>

<head>
 <test>3 </test>
</head>
...
<head>
 <test> 80 </test>
 </head>

假设我有 80 个组标签,所以我想生成 30 个文件。 那么我如何使用 csplit 来做到这一点。 我知道的开始是

csplit output_prefix File '/<head>/' '{*}'

【问题讨论】:

    标签: shell csplit


    【解决方案1】:

    发现csplit 成功了一半!这应该有效:

    % csplit --prefix File --elide-empty-files foo.xml '/<head>/' '{*}'
    33
    33
    ...
    
    % ls
    File00  File01  File02  ...  foo.xml
    

    选项/参数顺序很重要。试试csplit --help 看看它的所有选项。

    % csplit --help
    Usage: csplit [OPTION]... FILE PATTERN...
    

    【讨论】:

    • 谢谢我面临的问题是准确定义生成文件的数量。我如何修复生成文件的数量,因为根据用户的不同,我可以拥有 40 个或更多
    • csplit 所能做的就是在一个模式上进行拆分。如果您只需要 30 个文件,但有 40 个组,那么您的最后一个文件有 10 个额外组(如果您已限制)。您可以使用最后一个参数限制拆分的数量。在这种情况下,将 {*} 更改为 {30}
    猜你喜欢
    • 2021-03-27
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多