正则表达式与文件格式化处理正则表达式
基础正则表达式字符汇整 (characters)bash
sed 工具工具
sed 自己也是一个管线命令,能够分析 standard input 的啦! 并且 sed 还能够将数据进行取代、删除、新增、撷取特定行等等的功能呢。
复制代码
范例一:将 /etc/passwd 的内容列出而且打印行号,同时,请将第 2~5 行删除!spa
[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
复制代码
延伸正则表达式3d
文件的格式化与相关处理code
格式化打印: printfcdn
范例一:将刚刚上头数据的文件 (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:好用的数据处理工具blog
awk 也是一个很是棒的数据处理工具!相较于 sed 经常做用于一整个行的处理, awk 则比较 倾向于一行当中分红数个“字段”来处理。所以,awk 至关的适合处理小型的数据数据处理呢! awk 一般运行的模式是这样的:input
[dmtsai@study ~]$ awk '条件类型1{动做1} 条件类型2{动做2} ...' filename
复制代码
若我想要取出账号与登录者的 IP ,且账号与 IP 之间以 [tab] 隔开,则会变成这样:it
[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 之间就是两个不一样版 本的文件。 那么,若是要“升级”呢?就是“将旧的文件升级成为新的文件”时,应该要怎么作 呢? 其实也不难啦!就是“先比较先旧版本的差别,并将差别档制做成为补丁文件,再由补丁 文件更新旧文件”便可。