IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 2021-09-13【shell 编程-三剑客】【grep】【sed】【awk】 -> 正文阅读

[系统运维]2021-09-13【shell 编程-三剑客】【grep】【sed】【awk】

shell 编程-grep

grep命令是Globally search a Regular Expression and Print的缩写,表示进行全局的正则匹配并进行打印。grep的相关扩展命令egrep其中egrep支持更多的正则匹配。

grep基本正则匹配

< 词首定位符号 >词尾定位符号

[root@linux-server ~]# cat jack.txt
Jack JACK JAck jackly jack
:% s/<[Jj]ack>/123/g

^以什么开头 [root@linux-server ~]# grep ‘^root’ /etc/passwd
KaTeX parse error: Expected 'EOF', got '#' at position 28: …linux-server ~]#? grep 'bash’ /etc/passwd
root?0:0:root:/root:/bin/bash
confluence?1000:1000:Atlassian Confluence:/home/confluence:/bin/bash
to?1003:1003::/home/to:/bin/bash

. 匹配单个字符
[root@linux-server ~]# grep ‘r…t’ /etc/passwd
root?0:0:root:/root:/bin/bash
operator?11:0:operator:/root:/sbin/nologin
ftp?14:50:FTP User:/var/ftp:/sbin/nologin
dockerroot?998:995:Docker User:/var/lib/docker:/sbin/nologin
[root@linux-server ~]#
grep ‘r.t’ /etc/passwd
operator?11:0:operator:/root:/sbin/nologin
sshd?74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

.* 任意多个字符
[root@linux-server ~]# grep ‘r.*t’ /etc/passwd
root?0:0:root:/root:/bin/bash
operator?11:0:operator:/root:/sbin/nologin
ftp?14:50:FTP User:/var/ftp:/sbin/nologin
systemd-network?192:192:systemd Network Management:/:/sbin/nologin polkitd?999:997:User for polkitd:/:/sbin/nologin postfix?89:89::/var/spool/postfix:/sbin/nologin
sshd?74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin dockerroot?998:995:Docker User:/var/lib/docker:/sbin/nologin
tss?59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
apache?48:48:Apache:/usr/share/httpd:/sbin/nologin
abrt?1041:1041::/home/abrt:/bin/bash

[] 匹配方括号中的任意一个字符
[root@linux-server ~]# useradd Root
[root@linux-server ~]# grep ‘Root’ /etc/passwd
[root@linux-server ~]# grep ‘[Rr]oot’ /etc/passwd
root?0:0:root:/root:/bin/bash
operator?11:0:operator:/root:/sbin/nologin
Root?1000:1000::/home/Root:/bin/bash

[ - ] 匹配指定范围内的一个字符
[root@linux-server ~]# grep [a-z]oot /etc/passwd #a-z
root?0:0:root:/root:/bin/bash
operator?11:0:operator:/root:/sbin/nologin
dockerroot?998:995:Docker User:/var/lib/docker:/sbin/nologin

[^] 匹配不在指定组内的字符,非得意思
[root@linux-server ~]# grep ‘[^0-9]’ /etc/passwd

[root@linux-server ~]# grep ‘[^0-9A-Z]oot’ /etc/passwd
root?0:0:root:/root:/bin/bash
operator?11:0:operator:/root:/sbin/nologin
dockerroot?998:995:Docker User:/var/lib/docker:/sbin/nologin
#注意:在[]内表示取反,在[]外表示以什么开头

()匹配后的标签
[root@linux-server ~]# cat file1.txt
IPADDR=192.168.1.123
GATEWAY=192.168.1.1
NETMASK=255.255.255.0
DNS=114.114.114.114
用法;
:%s/(192.168.1.)123/\12/
:%s/(192.)(168.)(1.)12/\1\2\35/

在这里插入图片描述

扩展正则匹配—egrep

egrep 支持正则表达式的拓展元字符
[root@linux-server ~]# egrep ‘[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}’ /etc/resolv.conf
nameserver 192.168.246.2

  • 匹配一个或多个前导字符
    [root@linux-server ~]# egrep ‘ro+t’ /etc/passwd
    root?0:0:root:/root:/bin/bash
    operator?11:0:operator:/root:/sbin/nologin
    dockerroot?998:995:Docker User:/var/lib/docker:/sbin/nologin

a|b 匹配a或b
[root@linux-server ~]# netstat -anlp|egrep ‘:80|:22’
[root@linux-server ~]# egrep ‘root|jack’ /etc/passwd
root?0:0:root:/root:/bin/bash
operator?11:0:operator:/root:/sbin/nologin
jack1?1001:1001::/home/jack1:/bin/bash
jack2?1002:1002::/home/jack2:/bin/bash

x{m} 字符x重复m次
[root@linux-server ~]# cat a.txt
love
love.
loove
looooove
[root@linux-server ~]# egrep ‘o{2}’ a.txt
loove
looooove
[root@linux-server ~]# egrep ‘o{2,}’ a.txt
loove
looooove
[root@linux-server ~]# egrep ‘o{6,7}’ a.txt
在这里插入图片描述

shell 编程-SED

sed:stream editor(流编辑器)的缩写是一种在线非交互式编辑器,它一次处理一行内容。这样不断重复,直到文件末尾。

Sed主要用

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

非交互式编辑器,一次处理一行内容。

支持正则表达式
与grep一样,sed在文件中查找模式时也可以使用正则表达式(RE)和各种元字符,用于查找和替换,以下是sed支持的元字符:
使用基本元字符集 ^, $, ., *, [], [^], < >,()
使用扩展元字符集 ?, +, { }, |, ( )
在这里插入图片描述
sed基本用法
在这里插入图片描述

打印

sed 默认会输出文件的每一行,无论这行内容是否能匹配上匹配模式
语法:
sed -r ‘匹配内容’ file_name
-r:支持扩展正则,在实际使用的时候,都会加上 -r 参数,即使没有用的扩展正则也不会有任何影响。

搜索替换

sed会自动打印文件的每一行,同时查找模式匹配的行,找到后执行后面的命令,默认是 p 打印(不加 -n 的情况下)
在这里插入图片描述

4.-n #静默输出(不打印默认输出)

[root@localhost ~]# sed -r -n ‘s/MA/Massachusetts/’ test.txt
案例:
[root@localhost ~]# sed -r ‘s/SELINUX=disabled/SELINUX=enabled/’ /etc/sysconfig/selinux

多重编辑选项

在这里插入图片描述

地址(定址)

地址用于决定对哪些 进行编辑。地址形式可以是数字、正则表达式或二者的结合。如果没有指定地址,sed将处理输入文件中的所有行
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

sed流编辑器命令用法及解析

在这里插入图片描述

sed常见操作

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:47:18  更:2021-09-14 13:49:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:20:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码