sed初级使用
stream editor
一次只读一行,只处理一行,不对源文件做处理,至输出到屏幕上
模式空间
是一个行编辑器
格式
sed[options] "script" FILE....
选项:
-n:静默模式,不输出模式空间内的内容;默认打印空间模式的内容
-r:扩展的正则表达式
-f 文件:指定sed脚本文件
-e 'script' -e 'script' :指定多个编辑指令
-i : 直接编辑原文件
编辑命令:
d:删除
p: 打印
i \:在被指定到的行前面插入文本
a \:在被指定的行的下面插入文本
\n:换行
r 文件:在指定位置把另外一个文件的内容插入
w 文件:将符合条件的所有行保存至指定文件中
=:显示符号条件的行的行号
s///:查找条件可以使用模式,但是要替换的内容不行
地址定界:自定义的起始行到结束行
startline,endline
1,3
/pat1/,/pat2/
/pattern/
用法:sed [options] 'addr1[,addr2]编辑命令' FILE...
sed [options] "addr1[,addr2]编辑命令" FILE...
练习:
1)替换/etc/inittab文件中”id:3:initdefault:"一行中的数字为5
sed 's@\(id:\)[0-9]\(:initdefault\)@\15\2' /etc/inittab
2)删除/etc/init.d/funcions文件中的空白行
sed "/^$/d" /etc/init.d/funcions
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,\}@@g" /boot/grub/grub.conf
6)取出一个文件路径的目录名称,如/etc/sysconfig/network,其目录为/etc/sysconfig,功能类似dirname命令;
echo /etc/sysconfig/network | sed "s@[^/]\{1,\}/\?$@@"
sed高级用法:t,T,D,P,N,n,H,h,G,g
awk命令:
awk:报告生成工具
把文件中读取带的每一行的每个字段分别进行格式化,而后进行显示:
支持使用变量、条件判断、循环、数组
选项:
-F:切割符
$0:整行
$1,$2.....:位置参数
用法格式:
awk [options] 'script' FILE...
awk [options] '/pattern/{action}' FILE...
action: print $1,$2
模式:
地址定界:/pat1/,/pat2/ 一个范围
/pattern/ 被匹配到的行
experssion 表达式
>,>=,<,<=,==,!=,~(模式匹配)
!:取反
BEGIN:执行前操作
END:执行后的收尾 操作
awk的常用四种分隔符:
输入:
行分隔符
字段分隔符
输出:
行分隔符
字段分隔符
awk的内置变量
NF:最后一个字段
FS: 指定输入分隔符 在BEGIN中定义,指定时要使用""
默认为空白
OFS:输出时指定的分隔符,在BEGIN中定义,指定时要使用"",默认为空白
练习:
1.显示GID小于500的组
awk -F : '$3<500{print $1}' /etc/group
2.显示默认的shell为nologin的用户
awk -F : '$7~/nologin$/{print $1}' /etc/passwd
3,显示eth0网卡文件的配置信息,注意,只显示等号后面的值
awk -F = '{print $2}' /etc/sysconfig/network-scripts/ifcfg-eth0
4.显示/etc/sysctl。conf文件中定义的内核参数:只显示名称,
awk -F =' !/^#|^$/{print $1}'/etc/sysctl.conf
5.显示eth0网卡的ip地址,通过ifconfig命令结果进行过滤
ifconfig eth0 |awk '/inet addr/{print $2}' |awk -F : '{print $2}'
如果只显示文本内容,优先显示grep
awk的高级部分:其他内置变量、用户自定义变量、条件判断、循环、数组、内置函数:
stream editor
一次只读一行,只处理一行,不对源文件做处理,至输出到屏幕上
模式空间
是一个行编辑器
格式
sed[options] "script" FILE....
选项:
-n:静默模式,不输出模式空间内的内容;默认打印空间模式的内容
-r:扩展的正则表达式
-f 文件:指定sed脚本文件
-e 'script' -e 'script' :指定多个编辑指令
-i : 直接编辑原文件
编辑命令:
d:删除
p: 打印
i \:在被指定到的行前面插入文本
a \:在被指定的行的下面插入文本
\n:换行
r 文件:在指定位置把另外一个文件的内容插入
w 文件:将符合条件的所有行保存至指定文件中
=:显示符号条件的行的行号
s///:查找条件可以使用模式,但是要替换的内容不行
地址定界:自定义的起始行到结束行
startline,endline
1,3
/pat1/,/pat2/
/pattern/
用法:sed [options] 'addr1[,addr2]编辑命令' FILE...
sed [options] "addr1[,addr2]编辑命令" FILE...
练习:
1)替换/etc/inittab文件中”id:3:initdefault:"一行中的数字为5
sed 's@\(id:\)[0-9]\(:initdefault\)@\15\2' /etc/inittab
2)删除/etc/init.d/funcions文件中的空白行
sed "/^$/d" /etc/init.d/funcions
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,\}@@g" /boot/grub/grub.conf
6)取出一个文件路径的目录名称,如/etc/sysconfig/network,其目录为/etc/sysconfig,功能类似dirname命令;
echo /etc/sysconfig/network | sed "s@[^/]\{1,\}/\?$@@"
sed高级用法:t,T,D,P,N,n,H,h,G,g
awk命令:
awk:报告生成工具
把文件中读取带的每一行的每个字段分别进行格式化,而后进行显示:
支持使用变量、条件判断、循环、数组
选项:
-F:切割符
$0:整行
$1,$2.....:位置参数
用法格式:
awk [options] 'script' FILE...
awk [options] '/pattern/{action}' FILE...
action: print $1,$2
模式:
地址定界:/pat1/,/pat2/ 一个范围
/pattern/ 被匹配到的行
experssion 表达式
>,>=,<,<=,==,!=,~(模式匹配)
!:取反
BEGIN:执行前操作
END:执行后的收尾 操作
awk的常用四种分隔符:
输入:
行分隔符
字段分隔符
输出:
行分隔符
字段分隔符
awk的内置变量
NF:最后一个字段
FS: 指定输入分隔符 在BEGIN中定义,指定时要使用""
默认为空白
OFS:输出时指定的分隔符,在BEGIN中定义,指定时要使用"",默认为空白
练习:
1.显示GID小于500的组
awk -F : '$3<500{print $1}' /etc/group
2.显示默认的shell为nologin的用户
awk -F : '$7~/nologin$/{print $1}' /etc/passwd
3,显示eth0网卡文件的配置信息,注意,只显示等号后面的值
awk -F = '{print $2}' /etc/sysconfig/network-scripts/ifcfg-eth0
4.显示/etc/sysctl。conf文件中定义的内核参数:只显示名称,
awk -F =' !/^#|^$/{print $1}'/etc/sysctl.conf
5.显示eth0网卡的ip地址,通过ifconfig命令结果进行过滤
ifconfig eth0 |awk '/inet addr/{print $2}' |awk -F : '{print $2}'
如果只显示文本内容,优先显示grep
awk的高级部分:其他内置变量、用户自定义变量、条件判断、循环、数组、内置函数:
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29620572/viewspace-1789233/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29620572/viewspace-1789233/