535234 发表于 2016-8-10 09:01:06

sed结合正则表达式强化练习

、删除/etc/grub2.conf文件中所有以空白开头的行行首的空白字符
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# sed -r 's#^[[:space:]]+##g' /etc/grub2.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
set pager=1
if [ -s $prefix/grubenv ]; then
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="${saved_entry}"
fi
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi
export menuentry_id_option
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi




2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
1
2
3
4
5
6
7
8
9
10
11
12
13
# sed -r 's/^#[[:space:]]+//g' /etc/fstab
#
/etc/fstab
Created by anaconda on Tue Jul 19 14:39:24 2016
#
Accessible filesystems, by reference, are maintained under '/dev/disk'
See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=f83c52ce-5740-4f02-bb87-6e190360dc30 /                     xfs   defaults0 0
UUID=c98144e4-d1b4-45b1-bb22-3112420ea487 /boot                   xfs   defaults0 0
UUID=dbf5c483-133e-4888-bbb1-a9622d83a930 swap                  swap    defaults0 0
#END
#




2.1、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符且删除以#开头后面全是空白字符的行
1
2
3
4
5
6
7
8
9
# sed -r -e 's/^#[[:space:]]+//g' -e '/^#/d' /etc/fstab
/etc/fstab
Created by anaconda on Tue Jul 19 14:39:24 2016
Accessible filesystems, by reference, are maintained under '/dev/disk'
See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
UUID=f83c52ce-5740-4f02-bb87-6e190360dc30 /                     xfs   defaults0 0
UUID=c98144e4-d1b4-45b1-bb22-3112420ea487 /boot                   xfs   defaults0 0
UUID=dbf5c483-133e-4888-bbb1-a9622d83a930 swap                  swap    defaults0 0
#




3、在/etc/issue每一行行首增加#号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# cat -n /etc/issue
   1\S
   2Kernel \r on an \m
   3
# sed -r 's@(.*)@#&@g' /etc/issue
#\S
#Kernel \r on an \m
#
# sed -r 's@(.*)@#\1@g' /etc/issue
#\S
#Kernel \r on an \m
#
# sed -r 's@^@#@g' /etc/issue
#\S
#Kernel \r on an \m
#
#




4、在/etc/fstab文件中不以#开头的行的行首增加#号
1
2
3
4
5
6
7
8
9
10
11
12
13
# sed -r 's/^[^#]/#/g' /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Jul 19 14:39:24 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
#UID=f83c52ce-5740-4f02-bb87-6e190360dc30 /                     xfs   defaults
#UID=c98144e4-d1b4-45b1-bb22-3112420ea487 /boot                   xfs   defaults
#UID=dbf5c483-133e-4888-bbb1-a9622d83a930 swap                  swap    defaults
#END
#




5、处理/etc/fstab路径,使用sed命令取出其目录名和基名
1
2
3
4
5
6
7
8
9
10
# cd
# echo "/etc/hosts"|sed -r 's#/.*/([^/]+)#\1#g'
hosts
# echo "/etc/hosts" |sed -r 's#(/.*/)[^/]+/?#\1#g'
/etc/
# echo "/etc/issue"|sed -r 's#(.*/)([^/]+/?)$#\1#g'
/etc/
# echo "/etc/issue"|sed -r 's#(.*/)([^/]+/?)$#\2#g'
issue
#





6、利用sed 取出ifconfig命令中本机的IPv4地址
1
2
3
4
5
6
7
8
9
# ifconfig |sed -n 2p
      inet 192.168.226.138netmask 255.255.255.0broadcast 192.168.226.255
# ifconfig |sed -n 2p|sed -r 's/.*net //g'
192.168.226.138netmask 255.255.255.0broadcast 192.168.226.255
# ifconfig |sed -n 2p|sed -r 's/.*net //g'|sed -r 's/net.*//g'
192.168.226.138
# ifconfig |sed -nr '2s#^.*net (.*)netm.*$#\1#gp'
192.168.226.138
#




7、统计centos安装光盘中Package目录下的所有rpm文件的 以.分隔倒数第二个字段的重复次数
1
2
3
4
5
6
7
8
9
# ls *.rpm |sed -r 's/^.*\.(.*)\.rpm/\1/g'|sort |uniq -c |sort
   2000 i686
   2938 noarch
   4069 x86_64
# ls *.rpm |rev |cut -d. -f2 |sort|uniq -c|uniq
   4069 46_68x
   2000 686i
   2938 hcraon
#



页: [1]
查看完整版本: sed结合正则表达式强化练习