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

简介:

1、删除/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
[root@centos7 ~] # 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
[root@centos7 ~] # 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     defaults  0 0
UUID=c98144e4-d1b4-45b1-bb22-3112420ea487  /boot                    xfs     defaults  0 0
UUID=dbf5c483-133e-4888-bbb1-a9622d83a930 swap                    swap    defaults  0 0
#END
[root@centos7 ~] #

2.1、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符且删除以#开头后面全是空白字符的行

1
2
3
4
5
6
7
8
9
[root@centos7 ~] # 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     defaults  0 0
UUID=c98144e4-d1b4-45b1-bb22-3112420ea487  /boot                    xfs     defaults  0 0
UUID=dbf5c483-133e-4888-bbb1-a9622d83a930 swap                    swap    defaults  0 0
[root@centos7 ~] #

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

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

4、在/etc/fstab文件中不以#开头的行的行首增加#号

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@centos7 ~] # 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
[root@centos7 ~] #

5、处理/etc/fstab路径,使用sed命令取出其目录名和基名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@centos7 Packages] # cd
[root@centos7 ~] # echo "/etc/hosts"|sed -r 's#/.*/([^/]+)#\1#g'
hosts
[root@centos7 ~] # echo "/etc/hosts" |sed -r 's#(/.*/)[^/]+/?#\1#g'
/etc/
[root@centos7 ~] # echo "/etc/issue"|sed -r 's#(.*/)([^/]+/?)$#\1#g'
/etc/
[root@centos7 ~] # echo "/etc/issue"|sed -r 's#(.*/)([^/]+/?)$#\2#g'
issue
[root@centos7 ~] # echo "/etc/issue/" |grep '.*/\<'
/etc/issue/
[root@centos7 ~] # echo "/etc/issue/" |grep -o '.*/\<'
/etc/
[root@centos7 ~] # echo "/etc/issue/" |grep -o '[^/]\+/\?$'
issue/
[root@centos7 ~] #


6、利用sed 取出ifconfig命令中本机的IPv4地址 

1
2
3
4
5
6
7
8
9
[root@centos7 ~] # ifconfig |sed -n 2p
         inet 192.168.226.138  netmask 255.255.255.0  broadcast 192.168.226.255
[root@centos7 ~] # ifconfig |sed -n 2p|sed -r 's/.*net //g'
192.168.226.138  netmask 255.255.255.0  broadcast 192.168.226.255
[root@centos7 ~] # ifconfig |sed -n 2p|sed -r 's/.*net //g'|sed -r 's/  net.*//g'
192.168.226.138
[root@centos7 ~] # ifconfig |sed -nr '2s#^.*net (.*)  netm.*$#\1#gp'
192.168.226.138
[root@centos7 ~] #

7、统计centos安装光盘中Package目录下的所有rpm文件的 以.分隔倒数第二个字段的重复次数

1
2
3
4
5
6
7
8
9
[root@centos7 Packages] # ls *.rpm |sed -r 's/^.*\.(.*)\.rpm/\1/g'|sort |uniq -c |sort
    2000 i686
    2938 noarch
    4069 x86_64
[root@centos7 Packages] # ls *.rpm |rev |cut -d. -f2 |sort|uniq -c|uniq
    4069 46_68x
    2000 686i
    2938 hcraon
[root@centos7 Packages] #



本文转自chengong1013 51CTO博客,原文链接:http://blog.51cto.com/purify/1836292,如需转载请自行联系原作者
相关文章
|
5天前
|
Linux Perl
sed删除匹配正则表达式的行
sed删除匹配正则表达式的行
65 1
|
5天前
|
Perl
sed删除不匹配正则表达式的行(保留匹配行)
sed删除不匹配正则表达式的行(保留匹配行)
104 2
|
7月前
|
JavaScript 前端开发
带你读《现代Javascript高级教程》二十四、正则表达式的常见问题与练习(1)
带你读《现代Javascript高级教程》二十四、正则表达式的常见问题与练习(1)
|
7月前
|
JavaScript 前端开发
带你读《现代Javascript高级教程》二十四、正则表达式的常见问题与练习(2)
带你读《现代Javascript高级教程》二十四、正则表达式的常见问题与练习(2)
|
10月前
|
JavaScript 前端开发
《现代Javascript高级教程》正则表达式的常见问题与练习
正则表达式的常见问题与练习 正则表达式是面试中经常被提及的主题之一,但很多人在面试中对于正则表达式的问题常常感到困惑。在本节中,我将通过一些常见问题和练习题目来帮助你更好地理解和掌握正则表达式的技巧。
44 0
|
11月前
|
机器学习/深度学习 C语言 数据安全/隐私保护
『正则表达式』概念 及在grep、awk、sed、C语言、Python中的简单应用
正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式。它可以用来检查一个字符串是否符合某个规则,或者从一个字符串中提取出符合某个规则的子串。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。
|
12月前
java202303java学习笔记第二十八天-正则表达式基本练习2
java202303java学习笔记第二十八天-正则表达式基本练习2
49 0
|
12月前
java202303java学习笔记第二十八天-正则表达式基本练习1
java202303java学习笔记第二十八天-正则表达式基本练习1
42 0
|
12月前
java202303java学习笔记第二十八天-正则表达式基本练习3 原
java202303java学习笔记第二十八天-正则表达式基本练习3 原
38 0
|
12月前
java202303java学习笔记第二十七天-正则表达式基本练习1
java202303java学习笔记第二十七天-正则表达式基本练习1
46 0