当前位置: 首页 > news >正文

【linux】grep、awk、sed实战练习(1)-template

一、grep常见用法

1.1.从文件中查找关键字符串

# 比如:查找/etc/nginx/nginx.conf文件包含"listen"的行
[root@ecs_server test]# grep "listen" -n  /etc/nginx/nginx.conf
52:	    listen 8088; 
87:     listen 8096;
# 比如:查找/etc/passwd文件包含"root"的行
方法一:直接从文件中查找
[root@ecs_server ~]# grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
方法二:通过管道符号传输查找
[root@ecs_server ~]# cat /etc/passwd|grep "root"
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

1.2.从目录中查找关键字符串

# 比如:查找/home/下包含"李四"或"张三"的文件及行号
[root@ecs_server test]# grep -E "李四|张三" -n -r /home/
/home/test/a1.txt:4:李四
/home/test/b1.txt:10:李四
# 比如:比对/home/下a.xml和b.xml中ContactNumber字段的区别
[root@ecs_server test]# grep "ContactNumber" -n -r /home/
/home/test/b.xml:106:            <ContactNumber></ContactNumber>
/home/test/a.xml:106:            <ContactNumber>56451234</ContactNumber>

1.3.精确查找文件中包含的单词

使用grep中单词的定界符号:(\<...\> 或者 \b...b\),用于选取准确的字符串。

\< 和\b 是以什么开头;\>和b\ 是以什么结尾;\<...\> 或者 \b...b\ 是指查找这个单词

[root@ecs_server test]# cat d定界符.txt
lisi123
lisiabcde
45lisi
alisi
99lisi123
lisi
zhagnsan
# 单词以lisi开头
[root@ecs_server test]# cat d定界符.txt |egrep "\<lisi"
lisi123
lisiabcde
lisi
[root@ecs_server test]# cat d定界符.txt |egrep "\blisi"
lisi123
lisiabcde
lisi
# 单词以lisi结尾
[root@ecs_server test]# cat d定界符.txt |egrep "lisi\>"
45lisi
alisi
lisi
[root@ecs_server test]# cat d定界符.txt |egrep "lisi\b"
45lisi
alisi
lisi
# 单词以lisi开头和结尾
[root@ecs_server test]# cat d定界符.txt |egrep "\<lisi\>"
lisi
[root@ecs_server test]# cat d定界符.txt |egrep "\blisi\b"
lisi
# 比如:根据进程号(pid=442073)查看进程
[root@ecs_server test]# ps aux|egrep "\<442073\>"
root      442073  0.0  0.0  26828   924 ?        Ss   Jan02   0:00 nginx: master process /usr/sbin/nginx
root      488726  0.0  0.0  12144  1204 pts/2    S+   14:42   0:00 grep -E --color=auto \<442073\>

1.4.查看文件(滤除空行和注释行)

去除 #开头的注释行、空格键开头的空行、空行】,并显示行号,正则表达式:"\s*#|^$|^#"

[root@ecs_server-01 test]# cat /etc/login.defs |egrep -v -n "\s*#|^$|^#" 
15:MAIL_DIR	/var/spool/mail
25:UMASK		022
30:HOME_MODE	0700
39:PASS_MAX_DAYS	99999
40:PASS_MIN_DAYS	0
41:PASS_MIN_LEN	5
42:PASS_WARN_AGE	7
47:UID_MIN                  1000
48:UID_MAX                 60000
50:SYS_UID_MIN               201
51:SYS_UID_MAX               999
56:GID_MIN                  1000
57:GID_MAX                 60000
59:SYS_GID_MIN               201
60:SYS_GID_MAX               999
74:CREATE_HOME	yes
78:USERGROUPS_ENAB yes
81:ENCRYPT_METHOD SHA512

1.5.查出文件中包含的特殊字符

# |sort|uniq 排序 去重 查找出包含的特殊字符
[root@ecs_server test]# egrep -o "[^0-Z]" /etc/ssh/sshd_config |sort|uniq  	 
!
"
#
'
(
)
,
-
.# 列出包含特殊字符的所在行
[root@ecs_server test]# cat /etc/ssh/sshd_config |egrep -n -o "[^0-Z]"
1:#
1:	
1:$
1::
1: 
1:_
1:,
1: 
1:.

二、awk常见用法

awk是一种文本处理工具,它可以从文件或标准输入中逐行读取文本,并对每行文本进行指定操作。

两种语法格式

1.awk [选项] 命令 文本   #命令可分为三段 == ‘ BEGIN{print 1/2}’ {print”ok”} END{print”-----”}’

2.awk [选项] -f 脚本 文本

2.1.awk截取文件内容

比如:awk截取passwd文件的用户名以及密码
[root@ecs_server test]# awk -F ":" '{print $1,$2}' /etc/passwd|head -n 10
root x
bin x
daemon x
adm x
lp x
sync x
shutdown x
halt x
mail x
operator x

 2.2.awk命令的操作命令(BEGIN、END、NF、NR)

$1~/root/  :表示在第一个字段里面包含“root” 
$3>1005 :UID大于1005的
BEGIN  :只在文件开头运行一次 
END :只在文件结尾运行一次 
NF :一行里有多少个字段(列) 
NR : 行号 
$NF :最后一个字段 
length($1) :表达 $1 字段的长度 

[root@ecs_server-01 test]# awk -F ":" 'BEGIN{num=0;print "开始处 理文件/etc/passwd"} $1~/root/ || $3>1005 {print NR,NF,$1,length($1),$NF,$(NF-1),$3;num++} END{print "total:" num}' /etc/passwd 
开始处 理文件/etc/passwd
1 7 root 4 /bin/bash /root 0
13 7 nobody 6 /sbin/nologin / 65534
total:2

2.3 awk的for循环

user[$1]=$3 :赋值操作,user类似是一个字典key=$1,value=$3,{tss:59,clevis:997,……}
login[$1]=$7 :赋值操作,{root:/bin/bash,bin:/sbin/nologin,……}

[root@ecs_server test]# cat /etc/passwd|awk -F ":" '{user[$1]=$3;print $1,user[$1]}'|head
root 0
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
operator 11
[root@ecs_server test]# cat /etc/passwd|awk -F ":" '{login[$1]=$7;print $1,login[$1]}'|head
root /bin/bash
bin /sbin/nologin
daemon /sbin/nologin
adm /sbin/nologin
lp /sbin/nologin
sync /bin/sync
shutdown /sbin/shutdown
halt /sbin/halt
mail /sbin/nologin
operator /sbin/nologin
[root@ecs_server test]# cat /etc/passwd|awk -F ":" '{user[$1]=$3}END{for(i in user) print i,user[i]}'|head
tcpdump 72
sshd 74
setroubleshoot 991
systemd-resolve 193
shutdown 6
bin 1
redis 987
chrony 990
tss 59
mail 8

 三、sed常见用法

 sed命令是一种流编辑器,用于对文本进行处理和转换。它可以读取文本文件并对其进行编辑、替换、删除、插入等操作,可以实现批量修改文件内容的功能。 sed是一种支持正则表达式的非交互式流编辑器(stream editor),是脚本中修改文本或者文本替换的最佳工具。

 可参考:

sed命令详解 - edwardlost - 博客园
 


如有问题之处,请多多指教。

相关文章:

【linux】grep、awk、sed实战练习(1)-template

一、grep常见用法 1.1.从文件中查找关键字符串 # 比如&#xff1a;查找/etc/nginx/nginx.conf文件包含"listen"的行 [rootecs_server test]# grep "listen" -n /etc/nginx/nginx.conf 52: listen 8088; 87: listen 8096; # 比如&#xff1a;查…...

UDP报文格式

UDP是传输层的一个重要协议&#xff0c;他的特性有面向数据报、无连接、不可靠传输、全双工。 下面是UDP报文格式&#xff1a; 1&#xff0c;报头 UDP的报头长度位8个字节&#xff0c;包含源端口、目的端口、长度和校验和&#xff0c;其中每个属性均为两个字节。报头格式为二…...

联想Android面试题及参考答案

请介绍一下 Android 的架构,并谈谈对 Linux 的了解。 Android 架构主要分为四层,从下往上依次是 Linux 内核层、系统运行库层、应用框架层和应用层。 Linux 内核层是 Android 系统的基础。它提供了底层的硬件驱动程序,包括显示驱动、摄像头驱动、音频驱动等多种硬件设备的驱…...

Android CustomTextField

在 Compose 中开发用户界面时&#xff0c;需要处理输入框和键盘的交互&#xff0c;例如在键盘弹出时调整布局位置&#xff0c;避免遮挡重要内容。本篇博客将通过一个完整的示例展示如何实现这一功能。 功能概述 本例实现了一个简单的输入框。当输入框获得焦点或输入文字时&…...

网络设备安全保证计划 (NESAS) - 供应商视角 笔记

NESAS 对供应商的意义 提升产品安全性: NESAS 为供应商提供了一套全球认可的安全评估标准&#xff0c;帮助其识别和解决产品中的安全漏洞。通过 NESAS 评估&#xff0c;供应商可以证明其产品符合行业最高安全标准&#xff0c;增强客户信任。增强市场竞争力: 通过 NESAS 认证的…...

强化学习-蒙特卡洛方法

强化学习-数学理论 强化学习-基本概念强化学习-贝尔曼公式强化学习-贝尔曼最优公式强化学习-值迭代与策略迭代强化学习-蒙特卡洛方法 文章目录 强化学习-数学理论一、蒙特卡洛方法理论(Monte Carlo, MC)二、MC Basic2.1 算法拆解2.2 MC Basic算法 三、MC Exploring Starts3.1 …...

IIO(Industrial I/O)驱动介绍

文章目录 IIO&#xff08;Industrial I/O&#xff09;驱动是Linux内核中用于工业I/O设备的子系统&#xff0c;主要用于处理传感器数据采集和转换。以下是其关键点&#xff1a; 功能 数据采集&#xff1a;从传感器读取数据。数据处理&#xff1a;对原始数据进行滤波、校准等操作…...

画流程图 代码生成流程图 流程图自动运行

一&#xff1a;在线平台 典藏 drawio&#xff1a;完全免费&#xff1b;可拆入代码生成&#xff1b;使用方法 Kimi drawio生成流程图&#xff1a;Kimi里面生成Mermaid格式——>生成代码并复制——>进入drawio里面点插入"号"——>高级——>Mermaid——…...

Maven 配置本地仓库

步骤 1&#xff1a;修改 Maven 的 settings.xml 文件 找到你的 Maven 配置文件 settings.xml。 Windows: C:\Users\<你的用户名>\.m2\settings.xmlLinux/macOS: ~/.m2/settings.xml 打开 settings.xml 文件&#xff0c;找到 <localRepository> 标签。如果没有该标…...

计算机网络常见协议

目录 OSPF(Open Shortest Path First) NAT(Network Address Translation) ICMP (Internet Control Message Protocol) HTTPS&#xff08;SSL/TLS加密&#xff09; HTTPS协议 1. 对称加密 2. 非对称加密 3. 证书验证 4. 回顾https协议传输流程 HTTP TCP UDP 1. TCP&a…...

SCSSA-BiLSTM基于改进麻雀搜索算法优化双向长短期记忆网络多特征分类预测Matlab实现

SCSSA-BiLSTM基于改进麻雀搜索算法优化双向长短期记忆网络多特征分类预测Matlab实现 目录 SCSSA-BiLSTM基于改进麻雀搜索算法优化双向长短期记忆网络多特征分类预测Matlab实现分类效果基本描述程序设计参考资料 分类效果 基本描述 SCSSA-BiLSTM基于改进麻雀搜索算法优化双向长…...

基于Java+SpringBoot+Vue的前后端分离的体质测试数据分析及可视化设计

基于JavaSpringBootVue的前后端分离的体质测试数据分析及可视化设计 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码…...

Ansible实战:如何正确选择 command 和shell模块?

在使用Ansible进行自动化运维时&#xff0c;command 和 shell 模块是我们执行命令的好帮手。虽然它们看起来很相似&#xff0c;但在功能特性和适用场景上其实有着明显的不同。正确选择合适的模块不仅能够提高任务的效率&#xff0c;还能帮助我们规避一些潜在的风险。在这篇文章…...

机器学习:监督学习与非监督学习

监督学习是利用带有标签的数据进行训练,模型通过学习输入和输出之间的关系来进行预测。也就是说,数据集中既有输入特征,也有对应的输出标签,模型的目标是找到从输入到输出的映射关系。 而无监督学习则使用没有标签的数据进行训练,模型的任务是发现数据中的内在结构或模式…...

近红外简单ROI分析matlab(NIRS_SPM)

本次笔记主要想验证上篇近红外分析是否正确&#xff0c;因为叠加平均有不同的计算方法&#xff0c;一种是直接将每个通道的5分钟实时长单独进行叠加平均&#xff0c;另一种是将通道划分为1分钟的片段&#xff0c;将感兴趣的通道数据进行对应叠加平均&#xff0c;得到一个总平均…...

运输层安全协议SSL

安全套接字层 SSL (Secure Socket Layer) SSL 作用在端系统应用层的 HTTP 和运输层之间&#xff0c;在 TCP 之上建立起一个安全通道&#xff0c;为通过 TCP 传输的应用层数据提供安全保障。 应用层使用 SSL 最多的就是 HTTP&#xff0c;但 SSL 并非仅用于 HTTP&#xff0c;而是…...

“扣子”开发之四:与千帆AppBuilder比较

上一个专题——“扣子”开发——未能落地&#xff0c;开始抱着极大的热情进入&#xff0c;但迅速被稚嫩的架构模型折磨打击&#xff0c;硬着头皮坚持了两周&#xff0c;终究还是感觉不实用不趁手放弃了。今天询问了下豆包&#xff0c;看看还有哪些比较好的AI开发平台&#xff0…...

Asp .Net Core 实现微服务:集成 Ocelot+Nacos+Swagger+Cors实现网关、服务注册、服务发现

什么是 Ocelot ? Ocelot是一个开源的ASP.NET Core微服务网关&#xff0c;它提供了API网关所需的所有功能&#xff0c;如路由、认证、限流、监控等。 Ocelot是一个简单、灵活且功能强大的API网关&#xff0c;它可以与现有的服务集成&#xff0c;并帮助您保护、监控和扩展您的…...

62_Redis服务器集群优化

Redis集群虽然具备高可用特性,且能实现自动故障恢复,但是如果使用不当,也会存在一些问题,总结如下。 集群完整性问题集群带宽问题数据倾斜问题客户端性能问题命令的集群兼容性问题Lua和事务问题1.集群完整性问题 在 Redis 集群的默认配置下,当节点检测到存在至少一个哈希…...

【React】静态组件动态组件

目录 静态组件动态组件创建一个构造函数(类)使用 class 实现组件**使用 function 实现类组件** 静态组件 函数组件是静态组件&#xff1a; 组件第一次渲染完毕后&#xff0c;无法基于内部的某些操作让组件更新「无法实现自更新」&#xff1b;但是&#xff0c;如果调用它的父组…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...