sheel中sed及awk命令详细全解

sed命令

主要用于增删改
1.行前新增
(1)根据行号
sed ‘i #####’ test.log 所有行前新增一行,内容为#####
sed -i ‘i #####’ test.log
sed ‘1 i #####’ test.log 第一行前新增一行,内容为#####

sed ‘2,5 i #####’ test.log 2-5行每行新增一行,内容为#####

sed ‘5,$ i #####’ test.log 5到最后一行新增一行,内容为#####

sed ‘$ i #####’ test.log 最后一行新增一行,内容为#####

(2)根据正则
sed ‘/ens33/i####’ test.log 包含ens33的行前新增一行,内容为#####

sed ‘/ens33|fi/i####’ test.log 包含ens33或fi的行前新增一行,内容为#####

2.行后新增
将i换成a就是行前,其他一样

3.整行替换
将i换成c就是整行替换,其他一样
sed ‘2,5 c #####’ test.log 将2-5行整体替换为一个#######

sed ‘/ens33/c####’ test.log 包含ens33的行替换为#####

sed ‘/ens33|fi/c####’ test.log 包含ens33或fi的行替换为#####

4.整行删除
将i换成d,再把内容去掉,其他一样
sed ‘1,3 d’ test.log

sed ‘/ens33/d’ test.log

5.字符串替换,插入与删除
sed ‘s/ff/####/’ test.log 把每一行第一次出现的ff换成######

sed ‘s/ff/####/2’ test.log 把每一行第二次出现的ff换成######

sed ‘s/ff/####/g’ test.log 把ff全部换成######

sed ‘s/ff/####/g[i]’ test.log 把ff全部换成######

sed ‘1,7 s/ens33/####/’ test.log 把1-7行的ens33全部换成######

sed ’ s/ens33//opt/software/’ test.log 要替换的内容含有/时,需要转义,其他都不需要

删除:把替换的内容设为空即可
sed ‘1,7 s/ens33//g’ test.log

插入:转为替换 在ens33后面插入insert
sed ‘s/ens33/ens33insert/’ test.log

awk

主要用来提取信息

1.print
{print} 每行全部内容
{print $2} 每行第二个内容
{print $1,$3} 每行第一个和第三个内容

2.分隔符
awk -F ‘sep’ ‘{print $1}’ 指定分隔符为sep 默认为空格,输出第一个内容

空格作为分割符,可以不写,下面两种意思一样
awk -F ’ ’ ‘{print $1}’ 指定分隔符为空格,输出第一个内容
awk ‘{print $1}’ 默认分隔符为空格,输出第一个内容

其他分隔符
awk -F ‘/’ ‘{print $1}’ 指定分隔符为/输出第一个内容

3.配合正则
awk -F ‘/’ ‘/regexp/{print $1}’ 找到包含regexp的行,然后以/为分隔符输出第一个内容

4.多次筛选,即两个awk语句,用|连接
awk -F ‘/’ ‘/noprefixroute ens33/{print $1}’|awk -F ’ ’ ‘{print $2}’

使用
command|awk … 或者
awk… file

示例:
获取当前虚拟机ip
方法1:ip addr|awk -F ‘/’ ‘/noprefixroute ens33/{print $1}’|awk -F ’ ’ ‘{print $2}’
方法2:ip addr>test.log
awk -F ‘/’ ‘/noprefixroute ens33/{print $1}’|awk -F ’ ’ ‘{print $2}’ test.log

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值