split & csplit基本操作和高级操作

早期的文件切割是因为软盘容量有限,而今天文件切割的目的是为了提高可读性、生成日志等。

 

生成一个大小100k的内容为0的测试文件:

dd if=/dev/zerobs=100k count=1 of=data.file

1.  使用split:

split –b 10kdata.file

-d 以数字为后缀

-a length 指定后缀长度

加文件前缀名:

split –b 10kdata.file –d –a 4 split_file

根据行数切割文件:

split –l 10data.file 每个分割的文件为10行

2.  使用csplit

是split工具的一个变体,split只可以按照数据大小和行数分割文件,而csplit可以根据文件自身的特点分割。

例:

log.log文件:

log-1

[***************]aabbccddee 1

[***************]aabbccddee 2

[***************]aabbccddee 3

[***************]aabbccddee 4

log-2

[***************]aabbccddee 5

[***************]aabbccddee 6

[***************]aabbccddee 7

[***************]aabbccddee 8

log-3

[***************]aabbccddee 9

[***************]aabbccddee 10

[***************]aabbccddee 11

[***************]aabbccddee 12

分割为log1.log、log2.log、log3.log

csplit log.log /log/ -n 2 –s {*} –f log –b “%02d.log” ; rm log00.log

/log/用来匹配某一行,分割从此处开始;

/[REGEX]/文本样式。从当前【第一行】行直到【不包含】“log”的匹配行;

{*}根据匹配重复执行分割,直到文件末尾结束,可以{number}指定重复次数;

-s静默模式,不打印其他信息;

-n 指定分割后文件后缀的数字字数;

-f 指定分割后文件前缀;

-b 指定后缀格式,例如“%02d.log”,类似c语言的sprintf,这里文件前缀+后缀=log+%02d.log;

3.根据扩展名切割文件名

有时候按照脚本需要,可能根据文件名进行各种处理,比如保留扩展名的同时修改文件名、转化格式或者提取部分文件名。shell的内建功能可以根据不同的情况切分文件名。

提取文件名:

file_txt=”example.txt”

name=${ file_txt%.*}

echo File name is :$name

提取扩展名:

extension=${file_txt#*.}

echo Extension is : $ extension

${var%.*}含义:从$var中删除位于%右边的通配符匹配的字符串,通配符从左开始匹配;

var=${}给var赋值,则通配符就会匹配从右到左匹配到.txt,因此从$var中删除匹配结果,即留下“example”。

%和%%匹配原则:

都是从右到左匹配。

%非贪婪规则

例:var=a.b.c.d

echo ${var%.*} #输出a.b.c

%%贪婪规则:

echo ${var%%.*} #输出a

${var#*.}

删除位于#右边的的通配符,即前例中使用的*.所匹配的字符串,通配符从左到右匹配。类似%,且也有##贪婪操作符。

echo ${var#*.} #输出b.c.d

echo ${var##*.} #输出d

例:

提取域名不同部分;

假设url=www.666.com

echo ${url%.*} #www.666

echo ${url%%.*} #www

echo ${url#*.} #666.com

echo ${url##*.} #com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值