linux split 命令
功能说明:切割文件。
语 法:split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名] 【前缀】
补充说明:split可将文件切成较小的文件,预设每1000行会切成一个小文件。
参 数:
-<行数>或-l<行数> 指定每多少行就要切成一个小文件。
-b<字节> 指定每多少字就要切成一个小文件。支持单位:m,k
-C<字节> 与-b参数类似,但切割时尽量维持每行的完整性。(这个比较有用,特别是在分割大Sql文件时,如果‘ you ‘
被分割成‘yo 和u‘,那么cat后运行还是错误。
--help 显示帮助。
--version 显示版本信息。
[输出文件名] 设置切割后文件的前置文件名,split会自动在前置文件名后再加上编号。
使用例子:
split -b 100m filename
把文件分成100m的文件。
split -b 20m gkdb.db gkdb_pack_
gkdb_pack_是每个小文件的前缀。
1.文件切割
文件切割模式分为两种:
文本文件
二进制模式。
1.1文本模式
文本模式只适用于文本文件,用这种模式切割后的每个文件都是可读的。文本模式又分为两种:
按最大文件大小切割;
按文本行数切割。
1.1.1最大文件大小切割
split -C 5k duanxin split
将文本文件duanxin按每块最大5k的大小进行切割,不打碎行。输出文件名类似splitaa, splitab……
split -b 5k duanxin split
每个分块(当然,最后一个不保证)大小都是5k,可能会打碎行。
1.1.2 按文本行数切割
split -l 100 duanxin split
每个分块100行,不考虑大小。日志分析时应该有用。
1.2 二进制模式
split -b 5k duanxin split
每个分块(当然,最后一个不保证)大小都是5k,基本不可读。任何类型文件都可以用这种切割模式。
2.文件合并
cat split* >newduanxin
不管用什么方式切割,合并方法不变。
3.其它
split可以用-a选项指定输出文件名的长度。如
split -l 100 -a 3 duanxin split
则输出文件出类似于splitaaa,splitaab。不指定时默认为2。
用-b或-C指定分块大小时,可用的单位有,b for 512bytes, k for 1Kbytes, m for 1 Megbytes.
split 参数:
-a, --suffix-length=N 指定输出文件名的后缀,默认为2个
-b, --bytes=SIZE 指定输出文件的字节数
-C, --line-bytes=SIZE 每一输出档中,单行的最大 byte 数
-d, --numeric-suffixes 使用数字代替字母做后缀
-l, --lines=NUMBER NUMBER 值为每一输出档的列数大小
grep介绍 (1)grep 的一般格式为 grep [options] 基本正则表达式 [文件]
字符串参数最好采用是双引号括,一是以防被误解为shell命令,二是可以用来查找多个单词组成的字符串
-c:只输出匹配行的记数
-i:不区分大小写(只适用于单个字符)
-h:查询多个文件时不显示文件名
-H:只显示文件名
-l:查询多文件时只输出包含匹配字符的文件名
-n:只显示匹配行及其行号
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
(2)举例说明:
grep ^[^210] myfile 匹配myfile中以非2、1、0开头的行
如何删除文件指定行:
sed
“p” command prints the buffer (remember to use -n option with “p”)
“d” command is just opposite, its for deletion. ‘d’ will delete the pattern space buffer and immediately starts the next cycle.
:删除从第4行到第8行
$sed 4,8d thegeekstuff.txt
linux大文件分割 split命令