csplit
命令将用PATTERN
分隔的FILE
文件输出到文件xx00
、xx01
、...
,并将每个文件的字节数输出到标准输出。
csplit [OPTION]... FILE PATTERN...
-b, --suffix-format=FORMAT
: 使用sprintf FORMAT
格式而不是%02d
。-f, --prefix=PREFIX
: 使用PREFIX
代替xx
。-k, --keep-files
: 出错时不要删除输出文件。-m, --suppress-matched
: 取消匹配PATTERN
的行。-n, --digits=DIGITS
: 使用指定的数字位数,而不是2
。-s, --quiet, --silent
: 不要打印输出文件大小的计数。-z, --elide-empty-files
: 删除空输出文件。--help
: 输出帮助信息。--version
: 输出版本信息。
如果文件被指定为破折号-
,csplit
将读取标准输入,每种模式可能是:
INTEGER
: 复制到指定行号,但不包括指定行号。/REGEXP/[OFFSET]
: 复制到但不包括匹配行。%REGEXP%[OFFSET]
: 跳至但不包括匹配行。{INTEGER}
: 重复上一个模式指定的次数。{*}
: 尽可能多次重复前面的模式。
list.txt
文件内容如下:
1. Apples
2. Bananas
3. Oranges
4. Pineapples
5. Guava
使用csplit
命令将此文件分为两部分,第二部分从第三行开始。
csplit list.txt 3
# 21
# 34
cat xx00
# 1. Apples
# 2. Bananas
cat xx01
# 3. Oranges
# 4. Pineapples
# 5. Guava
使用csplit
命令将此文件分为三部分。
csplit list.txt 2 3
# 21
# 34
cat xx00
# 1. Apples
cat xx01
# 2. Bananas
cat xx02
# 3. Oranges
# 4. Pineapples
# 5. Guava
使用自定义的分割前缀aa
代替xx
分割前缀。
csplit list.txt -f aa 3
# 21
# 34
ls
# aa00 aa01 list.txt
使用三位数字代替默认的两位数字。
csplit list.txt -n 3 3
# 21
# 34
ls
# list.txt xx000 xx001
使用模式定义分割规则,重复上一个模式指定的次数。
csplit list.txt 2 {1}
# 10
# 22
# 23
ls xx*
# xx00 xx01 xx02
https://github.com/WindrunnerMax/EveryDay
https://www.computerhope.com/unix/ucsplit.htm
https://www.runoob.com/linux/linux-comm-csplit.html
https://www.geeksforgeeks.org/csplit-command-in-linux-with-examples/