这csplit.命令是不寻常的,允许您根据其内容将文本文件拆分为片段。该命令允许您指定上下文字符串,并将其用作分隔符,用于标识要保存为单独文件的块。
例如,如果您想要将日记条目分为一系列文件,每个文件都有一个条目,您可能会执行类似的文件。
$ csplit -z diary'/ ^亲爱的/''{*}'153 123 136
在此示例中,“日记”是要拆分的文件的名称。该命令正在寻找以“亲爱的”单词开始的行,就像“亲爱的日记”中,以确定每个块的开始位置。这-Z.选项讲述csplit.不要打扰保存将为空的文件。
您可以列出刚刚使用以下命令创建的文件,如以下命令将LS命令的输出限制为最新文件。显示的三个数字显示创建的三个单独文件中的每一个的长度。
$ ls -ltr |尾巴-3 -rw-r - r--。1 SHS SHS 136 1月1日15:02 XX02 -RW-R - R--。1 SHS SHS 123 1月1日15:02 XX01 -RW-R - R--。1 SHS SHS 153 1月1日15:02 XX00
您还可以使用分隔线的全文:
$ csplit -z日记'/ ^亲爱的日记,/''{*}'
在任何一种情况下,XX00文件都会如下所示:
$猫XX00亲爱的日记,今天是一个困难的一天。我把十几袋垃圾拖到了转车站,回家找到了几十多个等待我的门廊。
xx00,xx01,xx02等文件命名是默认值。拆分附加文件,除非使用此外,-F或者- 字首替换“xx”的选项与下面的示例中的内容更具意义,其中“日记”单词用于命名文件。
$ csplit -zf日记日记'/ ^亲爱的/''{*}'153 123 136 $ ls -ltr |尾巴-3 -rw-r - r--。1 SHS SHS 123 1月1日15:11 Dianry01 -RW-R - R--。1号1月1日15:11日用100 -RW-R - R--。1 SHS SHS 136 1月1日15:11 Dianry02
如果要拆分的文件由日期分隔,则可能会尝试这样的命令,这些命令查找日期字段的一部分:
$ csplit -zf日记日记'/,202 /'{*}'166 136 149 $ CAT DIARY00 12月11日,2021年DEAD日记,今天是一个艰难的一天。我把十几袋垃圾拖到了转车站,回家找到了几十多个等待我的门廊。
如果要将文件扩展名添加到输出文件,则可以将其指定为下面使用“.txt”作为文件扩展名的命令。02d指定要使用两位数字。这是默认值,但如果需要4位数,只需将2更改为4即可。
$ csplit -z -b“%02d.txt”diary“/,20 /''{*}'10 166 136 149 $ ls -ltr |尾巴-4 -rw-r - r--。1 SHS SHS 149 1月1日15:53 xx03.txt -rw-r - r--。1 SHS SHS 136 1月1日15:53 xx02.txt -rw-r - r--。1 SHS SHS 166 1月1日15:53 xx01.txt -rw-r - r--。1 SHS SHS 10 Jan 1 15:53 XX00.txt $ Cat XX01.txt 12月11日,2021 Dead日记,今天是一个艰难的一天。我把十几袋垃圾拖到了转车站,回家找到了几十多个等待我的门廊。
包起来
这csplit.命令可以将拆分文件基于有意义的休息相当容易,并包括足够的选项来帮助您完全符合您想要的结果。