linux下的sed和awk命令详解

awk命令:
awk比较倾向于将一行分成数个字段来处理,所以是比较适合处理小型数据处理。
awk ‘条件类型 1{动作 1} 条件类型 2{动作 2} …’ filename
1、例如我要取出我的centos7的mac地址:
linux下的sed和awk命令详解
使用命令:
linux下的sed和awk命令详解
2、我要取出登录账号 和 登录ip 并且两者之间使用【tab】分开
linux下的sed和awk命令详解
linux下的sed和awk命令详解
3、我们知道/etc/passwd 中的内容是以:来分割字段的,该文件中的第一个字段是账号,第三个字段是uid,那么我们要查阅第三列小于10以下的数据的时候,就可以这样做
linux下的sed和awk命令详解
linux下的sed和awk命令详解
上面的这个BEGIN就可以预先设置awk的变量,表示以:分割从第一行就开始

awk的好多动作都在单引号’’中,如果使用多个命令的时候就可以使用;或者直接按Enter

Sed命令:
Sed命令本身就是一个管道命令
1、sed ‘s/要被替换的字符串/新的字符串/g’ 【注意如果字符串里面要用变量的话,单引号可以使用双引号””来代替,这时就可以识别 $var 了】,在这里也可以使用正则匹配。
注意:在这里也可以直接修改文件内容 sed -i ‘s/要被替换的字符串/新的字符串/g’ 文件名
2、将 /etc/passwd的内容列出来并打印行号,同时删除2-50行
在第二行后面加上 lixiaoliang
linux下的sed和awk命令详解
linux下的sed和awk命令详解
3、将/etc/passwd 的2-4行内容替换成 kji-time!!!!!!!!!!
linux下的sed和awk命令详解

在这里命令中2,4c是2-4行,还有2,$就是2到最后一行。
4、列出/etc/passwd的5-7行
linux下的sed和awk命令详解
这里的这个-n就是安静模式,如果没有-n这个参数就是5-7行重复输出
linux下的sed和awk命令详解