Regular Rules(sed基础用法,一些正则符号)

整体以及边界符号匹配

()的使用--组合为整体

括号内的字符串合起来作为一个整体进行处理

[root@node1 homework]# egrep '(13){1,}' phonenum.sh 
13948495862
12345678912313

|的使用--就是或的意思

[root@node1 homework]# egrep  '(hello)|crazy' phonenum.sh 
hello world hi you are best !
I went crazy to work

\b单词边界--匹配确定的单词

如果你想要匹配某个你确定的单词可以这样写

\broot\b 是说匹配root这个单词但是broot是匹配不了的

[root@node1 homework]# egrep  '\byou\b' phonenum.sh 
hello world hi you are best !

\<的使用--指代单词的开头

[root@node1 homework]# egrep  '\<yo' phonenum.sh 
hello world hi you are best !

\>符号的使用

[root@node1 homework]# egrep  'ld\>' phonenum.sh 
hello world hi you are best !

因此对于        /</>        的使用和        /b/b        是相同的

sed

流式编辑器

非交互式对文本进行增删改查等操作

逐行处理,并将结果输出到屏幕

我是目前是这样来使用sed的,sed 选择你处理文本的目的(直接修改,或者是打印你需要的内容)'正则匹配  命令 '  文本(这里的正则匹配是说你想参与内容,命令是具体如何执行你的目的,比如你想直接修改你的内容,那么你可以选择        i        选项,继而你想删除某一行因此你需要选择 d命令,对于文本可以使一个文件也可以通过管道输入)

sed修改网卡配置实例:

sed -ri '/IPADDR/s/172.157.150.(.*)/192.168.150.\1/'  /etc/sysconfig/network-scripts/ifcfg-ens160
sed -n  '/^IPADDR/p'   /etc/sysconfig/network-scripts/ifcfg-ens160
nmcli connection  reload 
nmcli connection up  ens160 

sed修改httpd服务器根目录

[root@node1 data]# sed -i  's#/var/www/html#/opt/wwwroot#'  /etc/httpd/conf/httpd.conf

sed脚本实践-安装httpd服务并将80端口修改为82(此处忽略对于安全性能的考虑)

#!/bin/bash

yum install -y httpd  &>/dev/null
echo "hello world "  > /var/www/html/index.html
sed -i '/^Listen 80/s/80/82/'   /etc/httpd/conf/httpd.conf
setenforce 0
systemctl stop  firewalld
systemctl restart httpd
systemctl enable httpd
[root@node1 ~]# netstat -antulp | grep :82
tcp6       0      0 :::82                   :::*                    LISTEN      45604/httpd         

查看端口号

之前没有关注过netstat这个命令此处我记录一下 

a        所有进程

n        以数字的形式显示内容

t        tcp协议

u        udp协议

p        端口号

[root@node1 homework]# netstat -antulp 
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      2198/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1255/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1249/cupsd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      40709/sendmail: acc 
tcp        0    232 192.168.150.128:22      192.168.150.1:53265     ESTABLISHED 22578/sshd: root [p 
tcp        0      0 192.168.150.128:22      192.168.150.128:45736   ESTABLISHED 50809/sshd: root [p 
tcp        0      0 192.168.150.128:45736   192.168.150.128:22      ESTABLISHED 50808/ssh           
tcp        0      0 192.168.150.128:22      192.168.150.1:52976     ESTABLISHED 20385/sshd: root [p 
tcp        0      0 192.168.150.128:22      192.168.150.1:52979     ESTABLISHED 20435/sshd: root [p 
tcp        0      0 192.168.150.128:22      192.168.150.1:25171     ESTABLISHED 44142/sshd: root [p 
tcp        0      0 192.168.150.128:22      192.168.150.130:60296   ESTABLISHED 50187/sshd: root [p 
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::82                   :::*                    LISTEN      45604/httpd         
tcp6       0      0 :::21                   :::*                    LISTEN      1610/vsftpd         
tcp6       0      0 :::22                   :::*                    LISTEN      1255/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1249/cupsd          
tcp6       0      0 :::3306                 :::*                    LISTEN      1372/mysqld         
udp        0      0 192.168.122.1:53        0.0.0.0:*                           2198/dnsmasq        
udp        0      0 0.0.0.0:67              0.0.0.0:*                           2198/dnsmasq        
udp        0      0 0.0.0.0:47203           0.0.0.0:*                           1118/avahi-daemon:  
udp        0      0 0.0.0.0:111             0.0.0.0:*                           1/systemd           
udp        0      0 0.0.0.0:123             0.0.0.0:*                           1135/chronyd        
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           1118/avahi-daemon:  
udp        0      0 127.0.0.1:323           0.0.0.0:*                           1135/chronyd        
udp6       0      0 :::39595                :::*                                1118/avahi-daemon:  
udp6       0      0 :::111                  :::*                                1/systemd           
udp6       0      0 :::5353                 :::*                                1118/avahi-daemon:  
udp6       0      0 ::1:323                 :::*                                1135/chronyd        

常用命令

打印模块,这里介绍如何使用sed输出你想要的内容

打印2 ~ 4行的内容
[root@node1 homework]# sed  -n  '2,4p' phonenum.sh 
12345678912313
hello world hi you are best 

打印1,4行的内容
[root@node1 homework]# sed  -n  '1p;3p' phonenum.sh 
13948495862
hello world hi you are best !
使用正则表达式去输出你想要的内容
[root@node1 homework]# sed  -n  '/^[^a-Z]/p' phonenum.sh 
13948495862
12345678912313


注意一些特殊的地方

[root@node1 homework]# sed  -n  '$p' phonenum.sh 
SPACE X succeeded
[root@node1 homework]# sed  -n  '/$/p' phonenum.sh 
13948495862
12345678912313
hello world hi you are best !
I went crazy to work
SPACE X succeeded
这俩个命令匹配的内容区别是在'$p'是说最后一行而另外一个是说所有含有$符号的内容
可以使用 cat -A    输出全部内容进行查看
[root@node1 homework]# cat -A  phonenum.sh 
13948495862$
12345678912313$
hello world hi you are best !$
I went crazy to work$
SPACE X succeeded$




留意$=的作用,他可以将你的行数输出
[root@node1 homework]# sed -n  '$=' phonenum.sh 
5

删除模块

删除第二行的内容
[root@node1 homework]# sed '2d' phonenum.sh 
13948495862
hello world hi you are best !
I went crazy to work
SPACE X succeeded

删除第二行到第四行的内容
[root@node1 homework]# sed '2,4d' phonenum.sh 
13948495862
SPACE X succeeded

删除正则表达式的内容
[root@node1 homework]# sed    '/^[^a-Z]/d' phonenum.sh 
hello world hi you are best !
I went crazy to work
SPACE X succeeded


$在这里可以代表最后一行,比如你想删除1到最后一行那么可以输入
[root@node1 homework]# sed '1,$d' phonenum.sh 

替换模块

替换每一行的第一个1,替换的内容是一个字符换可以自行定义
[root@node1 homework]# sed  's/1/2/' phonenum.sh 
23948495862
22345678912313
hello world hi you are best !
I went crazy to work
SPACE X succeeded
替换第二个4
[root@node1 homework]# sed    's/4/ change /2' phonenum.sh 
13948 change 95862
12345678912313
hello world hi you are best !
I went crazy to work
SPACE X succeeded
同样的,这个也可以使用正则表达式去匹配你所需要的部分内容
[root@node1 homework]# sed    '/^[^a-Z]/  s/4/ change /2' phonenum.sh 
13948 change 95862
12345678912313
hello world hi you are best !
I went crazy to work
SPACE X succeeded

处理文本块

i         行前插入文本

a        行后插入文本

c        替换当前行

记录一点小Tips

这是网络的配置文件

[root@node1 studyShell]# vim /etc/sysconfig/network-scripts/ifcfg-ens160 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值