二、sed 【可以理解为 行在线编辑工具】
作用:sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
定址:定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址,sed将处理输入文件的所有行。
例子:
sed '2,5d' datafile #删除第二到第五行 sed '/My/,/You/d' datafile #删除包含"My"的行到包含"You"的行之间的行 sed '/My/,10d' datafile #删除包含"My"的行到第十行的内容
退出状态:sed不向grep一样,不管是否找到指定的模式,它的退出状态都是0。只有当命令存在语法错误时,sed的退出状态才不是0。
1、添加
cat /etc/passwd | sed '2a dring coffee'
在第二行后添加dring conffe。添加多行加一个 \即可
2、删除
cat /etc/passwd | sed '2,$d'
删除第2行到最后一行
3、查找(列出)
cat /etc/passwd |sed -n '2,5p'
-n 为安静模式,没有将重复输出
4、替换
cat /etc/passwd |sed '2,5c hello,world'
正则表达式的替换
语句为: sed 's/要被替换的字符串/新的字符串/g'
/sbin/ifconfig eth0 | grep 'inet addr' |sed 's/^.*addr://g'
/sbin/ifconfig eth0 | grep 'inet addr' |sed 's/^.*addr://g'|sed 's/Bcast.*$//g'
剔除每一行前面的空格
sed "s/^ *//g"
四、grep
1、-E扩展成正则表达式,筛选出两行
[root@IOT-WXUNI-Furn-B ~]# cat /etc/passwd | grep -E "^(root|zabbix)" root:x:0:0:root:/root:/bin/bash zabbix:x:201:201::/home/zabbix:/bin/bash