sed&&awk&&grep简明教程

SED删除行方面操作,AWK擅长列方面操作,操作都需要正则表达式来定位。
Linux系统一切皆文件,对Linux的操作就是对文本的操作。针对文本操作,有“Linux三剑客”——grep、sed、awk。其中grep命令擅长查找功能;sed擅长取行和替换;awk擅长取列。这三款工具均可结合正则表达式,达到精确操纵文本,进而操纵Linux系统。


awk、sed、grep可以结合管道、重定向,也可以写在脚本中。


先生成示范文本
rpm -qai >> software-info
rpm -qai | head -15 >sedtest


(1)正则表达式
正则表达式是组成“样式”的基本语法,而“样式”是运用 sed 和 awk 必备的能力。 sed和 awk 相同的运行方式是:只要符合“样式”的数据行,就对它执行指定的“操作”。


结合grep语法
grep  -E -o “match_pattern" file_name1 file_name2 file_name3
-o 表示只输出文件中匹配到的部分
-E 表示使用扩展正则表达式


rpm -qai | head -15 > re-test

(2)SED简明教程
sed语法如下:
sed '样式命令' 文件
sed 的工作方式是读取文件内容,经流编辑之后,把结果显示到标准输出。


sed默认是将结果输出到屏幕上,因此其不会改变文件内容,想要改变文件内容,需要加一个 -i 选项;或者重定向到临时文件,然后确认没问题后,用mv 将临时文件覆盖源文件。


#删除1行到5行数据,并修改到源文件
sed -i '1,5d' sedtest




#删除第3行数据,并修改到源文件
sed -i '3d' sedtest
也可也这么操作:
sed '3d' >tmp
mv tmp sedtest




#将S打头的行,打印出来,-n选项意味着只输出符合条件的
 sed -n '/^S/p' sedtest 
#删除空白行
sed '/^$/d' sedtest


#将Bulid替换成Make,并打印输出到屏幕
sed -n 's/Build/Make/' sedtest


#将包含2016那一行中的Build替换为Make
sed -n '/2016/s/Build/Make/p' sedtest 


#将第一行到第七行,所有的6替换成x,而不是第一个6
[root@localhost jkjk]# sed -n '1,7s/6/x/pg' sedtest






(3)AWK简明教程




awk '样式'文件:把符合样式的数据行显示出来。
awk '{操作}' 文件:对每一行都执行{}中的操作。
awk '样式{操作}' 文件:对符合样式的数据行,执行{}中的操作。


#显示URL所在行
awk '/URL/' software_info
#打印出以:为分割,第二行
awk -F : '{print $2 }' software_info
cat software_info | head -20 | awk -F: '{print $2}'
#查找含有La关键字的数据行,中第三,四列,默认列分隔符是空格
awk '/La/{ print $3,$4}' 文件


#将ftp打头的账户1~3栏信息打印出来,以+++作为输出分隔符,以:作为输入分割符
awk -F: 'BEGIN{OFS="++++"} /^ftp/{print $1,$2,$3}' /etc/passwd


##获取网卡IP(方法有很多)
1.ifconfig | grep 'broadcast' | awk '{print $2}'
2.ifconfig | grep inet | awk '{print $2}' | head -1
3.ifconfig | awk '/inet/{print $2}' | head -1
3.hostname -I






(4)grep用法






(5)其他一些命令
sort,uniq
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值