sed流编辑器的介绍与常见操作(内含正则表达式,grep家族的介绍)

CONTENTS

 

1 正则表达式

2 grep家族

3 sed流编辑器

3.1 sed简介

3.2 sed命令格式及参数

3.3 sed常见操作


 

1 正则表达式

(1)正则表达式( regular expression, RE )是一种字符模式,用于在查找过程中匹配指定的字符。

在大多数程序里,正则表达式都被置于两个正斜杠之间;例如 /[o0]ve/ 就是由正斜杠界定的正则表达式,

它将匹配被查找的行中任何位置出现的相同模式。在正则表达式中, 元字符是最重要的概念。

(2)元字符

定义:元字符是这样一类字符,它们表达的是不同于字面本身的含义。

shell元字符(也称为通配符)由shell来解析 , 如 rm -rf   *.pdf,元字符 * Shell将其解析为任意多个字符;

正则表达式元字符 由各种执行模式匹配操作的程序来解析,比如vi、grep、sed、awk、python。

(3)基本的正则表达式的元字符类型如下:

扩展正则表达式元字符:

2 grep家族

grep:在文件中全局查找指定的正则表达式,并打印所有包含该表达式的行

egrep:扩展的egrep,支持更多的正则表达式元字符

fgrep:固定grep(fixed grep) ,有时也被称作快速(fast grep) ,它按字面解释所有的字符 

最常用也就是grep和egrep。

(1)grep的选项 :

grep程序的输入可以来自标准输入或管道,而不仅仅是文件,例如:

(2)grep和egrep

(3)举出grep和egrep的示例:

#grep的简单用法,具体一些参数就不详细解释了
grep 'tom'
ps aux | grep 'sshd'  #过滤sshd的服务
ll | grep '^d'        #过滤当前文件下的目录文件
grep 'alice' /etc/passwd /etc/shadow /etc/group  #过滤alice的用户
grep --help | grep '\-q'   #过滤grep -q的用法

#egrep过滤出该文件的存在ip形式的行
egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' /etc/sysconfig/network-scripts/ifcfg-ens33

 

3 sed流编辑器

3.1 sed简介

sed是一种在线的、非交互式的编辑器,它一次处理一行内容。处理时把当前处理的行存储在临时缓冲区中,称为“模式空间”( pattern space ),接着 用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
 

支持正则表达式:

3.2 sed命令格式及参数

(1)命令格式

sed [options] 'command' filename

(2)options选项 

(3)sed的基本用法

#选项为r表示支持扩展元字符,这边做测试,不加选项i,加了就直接编辑了
sed -r 's/root/alice/' /etc/passwd   #替换/etc/passwd文件中的第一个root为alice
sed -r 's/root/alice/g' /etc/passwd  #全局替换/etc/passwd文件中的root为alice
sed -r 's/root/alice/gi' /etc/passwd  #全局替换/etc/passwd文件中的root为alice,不区分大小写

sed -r 's/root/d' /etc/passwd   #删除含有root的行

#若要编辑的文件中含有/,例如下面这个文件。要转义或者重定义,如\#
cat a.txt 
/etc/abc/123
etc

sed -r '/\/etc\/abc\/123/d' a.txt #删除行
sed -r '\#/etc/abc/123#d' a.txt 
sed -r 's#/etc/abc/123#/dev/sda1#' a.txt  #替换

3.3 sed常见操作

(1)删除配置文件中的注释和无内容空行

#(1)删除#注释
cp /etc/vsftpd/vsftpd.conf conf
sed -ri '/^[ \t]*#/d' conf 

#(2)删除//注释
sed -ri '\#^[ \t]*//#d' conf

#(3)删除无内容空行
sed -ri '^[ \t]*$/d' conf

#(4)删除注释及空行
sed -ri '/^[ \t]*#|^[ \t]*$/d' conf

 (2)修改文件

 #在conf文件最后追加内容
sed -ri '$a\chroot_local_user=YES' conf  
cat conf 

#找到以SELINUX=开头的这行,替换成一下内容。\c
sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config  
cat /etc/selinux/config 

#同理替换
sed -ri '/UseDNS/cUseDNS no' /etc/ssh/sshd_config 
sed -ri '/GSSAPIAuthentication/cGSSAPIAuthentication no' /etc/ssh/sshd_config 

(3)给文件添加注释

#给第三行到最后的行首零个或多个#替换成一个#
sed -ri '3,$s/^#*/#/' conf 
#将30到50行的所有注释替换单个注释
sed -ri '30,50s/^[ \t]*#*/#/' /etc/nginx.conf
#将2-8行注释空行替换成单个注释
sed -ri '2,8s/^[ \t#]*/#/' /etc/nginx.conf

继续打卡学习,加油!

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硬核的无脸man~

你的鼓励是我创作的最大功力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值