一、文本三剑客之sed
1、基本用法
sed [选项]... '{自身脚本语法};....' [input file...]
脚本语法:地址+sed特有的命令组成
常用选项:
-n 不输出模式空间内容到屏幕,即不自动打印
-e 多点编辑[root@www data]#sed -n -e '/^r/p' -e'/^b/p’ /etc/passwd
-f FILE 从指定文件中读取编辑脚本
-r,-E 使用扩展正则表达式
-i.bak 备份文件并原处编辑
sed脚本命令
p 打印
q 提前退出
n 取消打印
c 替换
操作
打印
打印两次
-n是指定行
打印2到3行的方法
+ 指从2开始打印后三行
打印到三行然后退出
提取ip地址
ifconfig ens33|sed -n '2p'
除了第二行打印出来
ifconfig ens33 |sed -n '2!p'
提取df的dev行
df| sed -n '/\/dev\/sd/p'
提取倒数第二行
sed -n "$(echo $[`cat /data/a|wc -l` -1])p" a
第一个正则表达式和第二个正则表达式之间的行
模板:sed -n '/part1/,/part2/'
sed -n '/^r/,/^f/p' /etc/passwd
找到5个r开头
sed -n '/^r/ , 5p' /etc/passwd
取奇数行
seq 10| sed -n '1~2p'
取偶数行
seq 10| sed -n '0~2p'或者seq 10| sed -n '1~2!p'
隔一行打印一个
seq 10 |sed -n 'p;n'
把第5行放到最后一行
seq 10 |sed '5{H;d};$G'
忽略大小写找以k开头的
sed -n '/^k/Ip' /etc/issue
把#号开头的行删掉
sed '/^#/d' fstab
把非#号开头的行删掉
sed '/^#/!d' fstab
在第二行后面加上haha
seq 10 |sed '2ahaha'
备份再第二行后面加上haha
sed -i.bak '2ahaha' a
在第二行后面加上cxk再往下面一行加上nylf
sed -i.bak '2acxk\nlyf' a
将第二行替换成cxk
seq 10|sed '2ccxk' a
把2导入指定a
seq 10| sed -n '2wa'
搜索替代
s/pattern/string/修饰符 查找替换,支持使用其它分隔符,可以是其它形式:s@@@,s###
替换修饰符:
g 行内全局替换
p 显示替换成功的行
w /PATH/FILE 将替换成功的行保存至文件中
I,i 忽略大小写
变量
使用sed查询是可以直接调用变量,注意必须用“ ”号或者俩个双引号,单引号不识别变量