使用sed分割文件

运维过程中,会遇到文件很大的情况。那么可以使用sed进行文件分割。

name=$1
lines=`wc -l $name|awk '{print $1}'`
filename="log_"
index=0
count=1
app=5
while [ $count -lt $lines ]
do
	end=`expr $count - 1 + $app`
	sed -n "$count,${end}p" $name > ${filename}${index}.log
	count=`expr $count + $app`
	index=`expr $index + 1`
done

其中app是每个文件的行数。filename是要保存成的文件的前缀。

---------------------------------

其实,shell提供了一个分割文件的命令:split

使用如下:

命令中,指定了分割之后的文件,每个文件100行, 并且文件以'd'为前缀开始命名。

另外,split命令的b选项可以直接指定分割之后的文件大小。用法如下:

其中以d开头的那些文件是分割出来的小文件。

-------------------------------------------

awk中也有一个split函数。看这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux中的split命令可以按照行来分割文件。具体使用方法如下: 1. 打开终端,进入需要分割文件所在的目录。 2. 输入以下命令: split -l 行数 文件名 其中,行数为每个分割文件包含的行数,文件名为需要分割文件名。 例如,如果需要将文件test.txt按照每100行分割成多个文件,可以输入以下命令: split -l 100 test.txt 执行完毕后,会在当前目录下生成多个以xaa、xab、xac等命名的文件,每个文件包含100行数据。 ### 回答2: Linux中的split命令可以用于按行分割文件。该命令的语法为: ``` split [选项] 文件名 前缀 ``` 其中,选项可以是以下之一: - -l 行数:指定每个分割文件包含的行数。 - -n 文件数目:指定分割文件的数量。 - -a 数字:指定分割文件名后缀的长度。 文件名是要分割文件的名称,前缀则是每个分割文件的名称前缀。 例如,如果我们有一个文件名为example.txt,其中包含10行文本。我们可以使用以下命令将其分割成2个包含5行文本的文件: ``` split -l 5 example.txt output ``` 这将生成两个分割文件outputaa和outputab,分别包含example.txt文件的前5行和后5行。 如果我们想要将文件分割成3个文件,每个文件包含3行文本,可以使用以下命令: ``` split -l 3 -n 3 example.txt output ``` 这将生成三个分割文件outputaa、outputab和outputac,每个文件包含example.txt文件中的3行文本。 通过使用split命令,我们可以轻松地按行将文件分割成多个部分,从而方便地处理大型文件。 ### 回答3: Linux中的split命令可以按照行来分割文件。该命令可以将一个大文件分割成多个小文件,每个小文件包含指定的行数。使用split命令可以很方便地处理大型日志文件、文本文件等。 使用split命令按行分割文件的语法如下: split -l <行数> <文件名> <输出文件前缀> 其中,-l参数用来指定每个小文件包含的行数,<文件名>为要分割文件名,<输出文件前缀>是指分割后生成的小文件的名称前缀。 例如,假设有一个名为sample.txt的文件,内容如下: This is line 1. This is line 2. This is line 3. This is line 4. This is line 5. 要将该文件按照每行2行进行分割,可以使用以下命令: split -l 2 sample.txt output_ 执行该命令后,会生成两个小文件,分别命名为output_aa和output_ab。 output_aa的内容为: This is line 1. This is line 2. output_ab的内容为: This is line 3. This is line 4. 如果源文件的行数不能整除指定的行数,那么最后一个分割的小文件会包含剩余的行。 需要注意的是,split命令分割文件时,并不修改原始文件,而是生成新的小文件。如果需要删除原始文件中被分割掉的行,可以使用其他命令进行处理,如sed命令。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值