1)sed简介

Stream Editor流编辑器,也称为行编辑器。一次只读一行进行编辑。
sed 默认是不对源文件进行做任何操作。也称之为模式空间。

2)sed命令格式

sed [option]...{script-only-if-no-other-script}[input0file]...

3)参数

-n:静默模式。不输出模式空间的内容= --quiet。
-e:指定多个编辑命令。
-f:指定sed脚本文件。
--follow-symlinks
-i:直接编辑源文件。
-r:可以使用扩展正则表达式。
--help:查看帮助。
--version:查看版本号。

命令实例:

-n静默模式,-p打印出来。

wKioL1Mbcm7hds36AAEbUkqkfPs944.jpg

-e多个命令操作。

wKioL1Mbc07iz6WfAAEyJe5d_Ys990.jpg

-i对文件直接操作。

wKiom1Mbc9PzgmbbAAGZ9kxMji4289.jpg

--verison查看版本

wKiom1MbdBiwc9U2AAD5JdZ4C20668.jpg

--help查看帮助信息。

wKioL1MbkGqQk8eVAAKf4hzY93w017.jpg

4)编辑命令

 
  
d:删除
p:打印
i \:在指定的范围的行插入新行。上一行。
a \text:新增一行,在下一行。
r /path/to/somefile:在指定位置把另外一个文件的内容插入进来。
w /path/to/somefile:将符合条件的所有行保存至指定的文件中。
=:显示符合条件的行的行号。
s///:字符串定界,查找条件可以使用模式,单要替换的内容的不行。

sed '/^#/d' /etc/fstab删除已#号开头的行。
sed '/^\//a \hello word' /etc/fstab已斜线开头的行,后面都追加上hello word。
sed '/^\//i  \hello word' /etc/fstab已斜线开头的行,上行面都追加上hello word。
sed '/^UUID/r  /etc/issue' /etc/fstab在fstab文件中已UUID开头的后面追加上issue的内容。
sed '/^\//w /tmp/txt' /etc/fstab  以斜线开头的都追加到tmp下的txt下。
sed -n '/^\//=' /etc/fstab显示出来匹配到的行号。
sed 's/id:3/id:5/'  /etc/inittab 把id:3替换成id:5。

等同于

sed 's@id:3@id:5@' /etc/inittab)

5)地址定界

startline,endline:从开始行到结束行。

sed ‘地址定界s@查找条件@替换文本@’

g:global:全局替换。

i:不区分字符大小写。

sed '1,3d' /etc/fstab删除1到3行。

6)sed练习题:

1)替换/etc/inittab文件中id:3为id:5.
sed 's/id:3/id:5/' /etc/inittab
2)删除/etc/init.d/funcions文件中的空白行。
sed '/^$/d' /etc/init.d/functions
3)删除/etc/inittab文件中位于行首的#号。
sed 's@^#@@g' /etc/inittab
4)删除/etc/rc.d/rc.sysinit文件中以#后跟至少一个空白字符开头的行的行首的#和空白字符。
sed 's@^#[[:space:]]\{1,\}@@g' /etc/rc.d/rc.sysinit
5)删除/boot/grub/grub.conf文件中行首的空白字符。
sed 's@^[[:space:]]\{1,\}@@' /boot/grub/grub.conf
6)取出一个文件路径的目录名称,如/etc/sysconfig/network,取出来的目录为/etc/sysconfig.
echo /etc/sysconfig/network | sed 's@[^/]\{1,\}/\?$@@'

一)AWK 讲解

 awk报告文本生成工具。也称之为gawk。

主要功能是把文件读取到的每一行的每个字段分别格式化,而后进行显示。

-F:指定分隔符。

默认是以空格分隔。

用法格式:

awk [options] 'script' FILE...
awk [options] '/pattern/{action}' FILE...

常用模式:

地址定界:/path1/,/path2/

>,>=,<,<=,==,!=,=~

BEGIN:在每一行处理之前,做一些提前处理,执行前操作。

wKioL1MfOHqjTsq_AADFosL7vc8895.jpg

END:执行命令操作完的工作,称之为收尾工作。

wKioL1MfOUvCfHDfAADLbEUwe94413.jpg

取出来以某个字符开头的字段

 wKiom1MfOgWw7XwJAACZm9r8z2E151.jpg

awk的内置变量:

NF:字段数,显示出来最后一个字段。

FS:读入行时使用的字段分隔符。

OFS:输出时使用字段分隔符,默认为空白

wKioL1MfO4TAG9FdAADz7Di_qMs732.jpg

wKiom1MfPJ6Dmh5-AADCIz7AZ-k378.jpg

wKioL1MfPQGA2xv1AAD3BsoF1qA797.jpg

 练习:

显示GID小于500的组

wKioL1MfPc-wfqGHAACVkRppAQc362.jpg

显示默认shell为bash的用户。

wKiom1MfPkrCuarpAACIAV7xSTA975.jpg

显示eth0网卡配置文件信息,只显示等号后面的值。

wKiom1MfPtuDva2kAAETeDEWr6Q031.jpg

显示/etc/sysctl.conf文件中定义的内核参数只显示名称。

wKioL1MfP1zQ6wKBAAIfRv2LnGE730.jpg

显示eth0网卡的ip地址,通过ifconfig的命令进行过滤。

wKiom1MfQHyC81g2AADEgEinj2k367.jpg