Linux学习笔记(六)-正则表达式与文件格式化处理

正则表达式与文件格式化处理

基础正则表达式字符汇整 (characters)

sed 工具

sed 本身也是一个管线命令,可以分析 standard input 的啦! 而且 sed 还可以将数据进行取代、删除、新增、撷取特定行等等的功能呢。
复制代码

范例一:将 /etc/passwd 的内容列出并且打印行号,同时,请将第 2~5 行删除!

[dmtsai@study ~]$ nl /etc/passwd | sed '2,5d'
1 root:x:0:0:root:/root:/bin/bash
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
复制代码

延伸正则表达式

文件的格式化与相关处理

格式化打印: printf

范例一:将刚刚上头数据的文件 (printf.txt) 内容仅列出姓名与成绩:(用 [tab] 分隔)
[dmtsai@study ~]$ printf '%s\t %s\t %s\t %s\t %s\t \n' $(cat printf.txt)
Name Chinese English Math Average
DmTsai 80 60 92 77.33
VBird 75 55 80 70.00
Ken 60 90 70 73.33
复制代码

awk:好用的数据处理工具

awk 也是一个非常棒的数据处理工具!相较于 sed 常常作用于一整个行的处理, awk 则比较 倾向于一行当中分成数个“字段”来处理。因此,awk 相当的适合处理小型的数据数据处理呢! awk 通常运行的模式是这样的:

[dmtsai@study ~]$ awk '条件类型1{动作1} 条件类型2{动作2} ...' filename
复制代码

若我想要取出帐号与登陆者的 IP ,且帐号与 IP 之间以 [tab] 隔开,则会变成这样:

[dmtsai@study ~]$ last -n 5 | awk '{print $1 "\t" $3}'
dmtsai 192.168.1.100
dmtsai 192.168.1.100
dmtsai 192.168.1.100
dmtsai 192.168.1.100
dmtsai Fri
复制代码

文件比对工具

diff

范例一:比对 passwd.old 与 passwd.new 的差异:
[dmtsai@study testpw]$ diff passwd.old passwd.new
4d3 <==左边第四行被删除 (d) 掉了,基准是右边的第三行
< adm:x:3:4:adm:/var/adm:/sbin/nologin <==这边列出左边(<)文件被删除的那一行内容
6c5 <==左边文件的第六行被取代 (c) 成右边文件的第五行
sync:x:5:0:sync:/sbin:/bin/sync <==左边()文件第六行内容

> no six line <==右边(>)文件第五行内容
复制代码

很聪明吧!用 diff 就把我们刚刚的处理给比对完毕了!

patch patch 这个指令与 diff 可是有密不可分的关系啊!我们前面提到,diff 可以用来分辨两个版本 之间的差异, 举例来说,刚刚我们所创建的 passwd.old 及 passwd.new 之间就是两个不同版 本的文件。 那么,如果要“升级”呢?就是“将旧的文件升级成为新的文件”时,应该要怎么做 呢? 其实也不难啦!就是“先比较先旧版本的差异,并将差异档制作成为补丁文件,再由补丁 文件更新旧文件”即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值