sed和awk简单使用
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打印出来。
-e多个命令操作。
-i对文件直接操作。
--verison查看版本
--help查看帮助信息。
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 '[email protected]:[email protected]:[email protected]' /etc/inittab)
5)地址定界
startline,endline:从开始行到结束行。
sed ‘地址定界[email protected]查找条件@替换文本@’
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 '[email protected]^#@@g' /etc/inittab 4)删除/etc/rc.d/rc.sysinit文件中以#后跟至少一个空白字符开头的行的行首的#和空白字符。 sed '[email protected]^#[[:space:]]\{1,\}@@g' /etc/rc.d/rc.sysinit 5)删除/boot/grub/grub.conf文件中行首的空白字符。 sed '[email protected]^[[:space:]]\{1,\}@@' /boot/grub/grub.conf 6)取出一个文件路径的目录名称,如/etc/sysconfig/network,取出来的目录为/etc/sysconfig. echo /etc/sysconfig/network | sed '[email protected][^/]\{1,\}/\[email protected]@'
一)AWK 讲解
awk报告文本生成工具。也称之为gawk。
主要功能是把文件读取到的每一行的每个字段分别格式化,而后进行显示。
-F:指定分隔符。
默认是以空格分隔。
用法格式:
awk [options] 'script' FILE...
awk [options] '/pattern/{action}' FILE...
常用模式:
地址定界:/path1/,/path2/
>,>=,<,<=,==,!=,=~
BEGIN:在每一行处理之前,做一些提前处理,执行前操作。
END:执行命令操作完的工作,称之为收尾工作。
取出来以某个字符开头的字段
awk的内置变量:
NF:字段数,显示出来最后一个字段。
FS:读入行时使用的字段分隔符。
OFS:输出时使用字段分隔符,默认为空白
练习:
显示GID小于500的组
显示默认shell为bash的用户。
显示eth0网卡配置文件信息,只显示等号后面的值。
显示/etc/sysctl.conf文件中定义的内核参数只显示名称。
显示eth0网卡的ip地址,通过ifconfig的命令进行过滤。
转载于:https://blog.51cto.com/shunzi/1370929