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

1、删除/etc/grub2.conf文件中所有以空白开头的行行首的空白字符

[[email protected] ~]# 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文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

[[email protected] ~]# 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
[[email protected] ~]#

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

[[email protected] ~]# 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
[[email protected] ~]#

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

[[email protected] ~]# cat -n /etc/issue
     1\S
     2Kernel \r on an \m
     3
[[email protected] ~]# sed -r ‘[email protected](.*)@#&@g‘ /etc/issue
#\S
#Kernel \r on an \m
#
[[email protected] ~]# sed -r ‘[email protected](.*)@#\[email protected]‘ /etc/issue
#\S
#Kernel \r on an \m
#
[[email protected] ~]# sed -r ‘[email protected]^@#@g‘ /etc/issue
#\S
#Kernel \r on an \m
#
[[email protected] ~]#

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

[[email protected] ~]# 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
[[email protected] ~]#

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

[[email protected] Packages]# cd
[[email protected] ~]# echo "/etc/hosts"|sed -r ‘s#/.*/([^/]+)#\1#g‘
hosts
[[email protected] ~]# echo "/etc/hosts" |sed -r ‘s#(/.*/)[^/]+/?#\1#g‘
/etc/
[[email protected] ~]# echo "/etc/issue"|sed -r ‘s#(.*/)([^/]+/?)$#\1#g‘
/etc/
[[email protected] ~]# echo "/etc/issue"|sed -r ‘s#(.*/)([^/]+/?)$#\2#g‘
issue
[[email protected] ~]#

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

[[email protected] ~]# ifconfig |sed -n 2p
        inet 192.168.226.138  netmask 255.255.255.0  broadcast 192.168.226.255
[[email protected] ~]# ifconfig |sed -n 2p|sed -r ‘s/.*net //g‘
192.168.226.138  netmask 255.255.255.0  broadcast 192.168.226.255
[[email protected] ~]# ifconfig |sed -n 2p|sed -r ‘s/.*net //g‘|sed -r ‘s/  net.*//g‘
192.168.226.138
[[email protected] ~]# ifconfig |sed -nr ‘2s#^.*net (.*)  netm.*$#\1#gp‘
192.168.226.138
[[email protected] ~]#

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

[[email protected] Packages]# ls *.rpm |sed -r ‘s/^.*\.(.*)\.rpm/\1/g‘|sort |uniq -c |sort
   2000 i686
   2938 noarch
   4069 x86_64
[[email protected] Packages]# ls *.rpm |rev |cut -d. -f2 |sort|uniq -c|uniq
   4069 46_68x
   2000 686i
   2938 hcraon
[[email protected] Packages]#
时间: 2024-12-17 16:03:05

sed结合正则表达式强化练习的相关文章

awk   sed   grep     正则表达式

做事要有耐心. 虚心接受建议,你确实有很多缺点. 就算进步慢,也不可以停止前进的脚步. AWK awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有三种不同版本: awk   gawk    nawk 1.使用方法 awk '{pattern + action}' {filenames} 其中 pattern 表示 AWK 在数

sed 及 正则表达式

一.sed基本概念 sed,流式编辑器 ,即把前一个程序输出引入到sed的输入,经过一系列编辑命令转换为另一种格式输出.默认使用Basic正则表达式规范,如若加 -r 选项则用Extended规范. 在Basic规范中,+.?.{ }.() .| 均表示普通含义,如果要使用其特殊含义,需使用 \ 转义,在Extended规范中则相反. sed在处理一行内容时,把当前处理的航存在临时缓冲区中(内存),称为模式空间,接着用sed命令处理模式空间的内容,处理完成后,把内容送往屏幕(但在某些时候,可以使

sed配合正则表达式应用

题目:要求用sed将/et/passwd的每一行的第一个数和最后一个单词交换位置 [[email protected] etc]# sed -n '1p' passwd root:x:0:0:root:/root:/bin/bash 一.分析:sed替换配合正则表达式将会发挥最佳效果.下面来分析匹配特点: 因为passwd文件每一行的特点都是一样的,所以先提取第一列观察,题目要求将第一个数字和最后一个单词替换,所以整行至少会被分隔成4段,用sed替换()后向引用\1与\4交换位置即可. 特点分析

Linux shell脚本之 Sed 简介 正则表达式

Sed简介 sed是一款轻量级流编辑器,是stream editor的简写.由于sed是以行为单位进行编辑文件 , 因此也称为行编辑器.它无需直接编辑资料,能够将编辑工作自动化. sed工作方式: 由标准输入读取编辑文件,读入一行或指定行放到模式空间,然后将所有编辑指令逐一对模式空间的内容进行编辑,之后将结果输出到标准输出,同时清除模式空间.接下来再将下一行资料读入模式空间,如此重复之前的操作,直到最后一行,流编辑器停止.源文件不变 Ps: 1.模式空间为读入行所在的缓存,sed对文本行进行的处

Linuxshell脚本之蛋疼Sed简介正则表达式

Sed简介sed是一款轻量级流编辑器,是stream editor的简写.由于sed是以行为单位进行编辑文件 , 因此也称为行编辑器.它无需直接编辑资料,能够将编辑工作自动化.sed工作方式:由标准输入读取编辑文件,读入一行或指定行放到模式空间,然后将所有编辑指令逐一对模式空间的内容进行编辑,之后将结果输出到标准输出,同时清除模式空间.接下来再将下一行资料读入模式空间,如此重复之前的操作,直到最后一行,流编辑器停止.源文件不变Ps:1.模式空间为读入行所在的缓存,sed对文本行进行的处理都是在这

sed 命令+正则表达式

sed是一个非交互性性文本编辑器, 它编辑文件或标准输入导出的文件拷贝.标准输入可能是来自键盘.文件重定向.字符串或变量,或者是一个管道文件.sed可以随意编辑小或大的文件,有许多 sed命令用来编辑.删除,并允许做这项工作时不在现场.sed一次性处理所有改变,因而变得很有效,对用户来说,最重要的是节省了时间.sed必须通过行号和正则表达式指定要改变的文本行 sed怎样读取数据: sed从文件的一个文本行或从标准输入的几种格式中读取数据,将之拷贝到一个编辑缓冲区,然后读命令行或脚本的第一条命令,

sed命令和正则表达式

sed命令和正则表达式 sed是一种在线的,非交互式的编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,成为模式空间,接着用sed命令处理缓冲区的内容.处理完,把缓冲区的内容送往屏幕.sed支持正则表达式与grep一样,sed在文件中查找模式时也可以使用正则表达式(RE)和各种元字符.正则表达式是括在斜杠间的模式,>用于查找和替换,以下是sed支持的元字符使用基本元字符集 ^ $ [] [^] \<\> () {} 使用扩展元字符 ?+ {} | () sed命令:

正则表达式及编程三剑客(grep、sed、awk)命令详解

博文大纲:一.正则表达式(1)正则表达式的定义(2)正则表达式用途1.基础正则表达式(1)grep命令工具2.扩展正则表达式二.文本编辑处理器1.grep命令工具2.sed命令工具3.awk命令工具 一.正则表达式 (1)正则表达式的定义 正则表达式又称正规表达式.常规表达式.在代码中常简写为regex.regexp或RE.正则表达式是使用单个字符串来描述,匹配一系列符合某个句法规则的字符串.简单的说,正则表达式是一种匹配字符串的方法,通过一些特殊符号,实现快速查找.删除.替换某个特定字符串.

shell脚本编程之正则表达式(二)(扩展正则表达式、sed)

shell脚本编程之正则表达式(二) 一.前言 ? 本文主要是对扩展正则表达式的介绍,同时,继续按照上篇文章的风格介绍sed文本处理工具,sed作为shell编程中"三剑客"之一,在对文本处理上有巨大作用.关于正则概念以及grep命令结合正则使用的案例请参照:https://blog.51cto.com/14557673/2455588 二.扩展正则表达式 ? 扩展正则表达式主要是为了简化指令而产出的.例如,使用基础正则表达式查询文件中空白行与行首为#号之外的行(一般用于查看生效的配置