当前位置: 首页 > 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;如果调用它的父组…...

只剩马斯克自己!xAI 11个联合创始人跑光了

11位联合创始人三年出清、只剩马斯克一人&#xff0c;xAI这场「天团散伙」背后&#xff0c;藏着AI时代最残酷的人才战争与帝国裂缝。3月28日&#xff0c;Ross Nordeen悄悄摘掉了自己在X平台上的xAI员工认证标识。他发了一张照片——「触碰一些草」。没有长篇告别信&#xff0c;…...

VideoAgentTrek-ScreenFilter低光照与高对比度场景处理效果突破

VideoAgentTrek-ScreenFilter低光照与高对比度场景处理效果突破 不知道你有没有过这样的经历&#xff1a;在昏暗的房间里看手机&#xff0c;屏幕上的内容因为反光变得一片模糊&#xff1b;或者看一个明暗对比特别强烈的视频&#xff0c;亮的地方刺眼&#xff0c;暗的地方又黑得…...

跨平台工具链部署指南:Rust工具集多系统安装与配置实践

跨平台工具链部署指南&#xff1a;Rust工具集多系统安装与配置实践 【免费下载链接】coreutils 跨平台的 Rust 重写 GNU 核心工具集。 项目地址: https://gitcode.com/GitHub_Trending/co/coreutils 基础安装篇&#xff1a;三步完成跨平台部署 零依赖极速部署&#xff…...

SteamShutdown终极指南:让Steam下载完成后自动关机的完整解决方案

SteamShutdown终极指南&#xff1a;让Steam下载完成后自动关机的完整解决方案 【免费下载链接】SteamShutdown Automatic shutdown after Steam download(s) has finished. 项目地址: https://gitcode.com/gh_mirrors/st/SteamShutdown 还在为Steam大型游戏下载而熬夜等…...

别再让运动模糊毁了你的检测!一文搞懂工业相机飞拍里的CMOS传感器与快门速度怎么配

工业相机飞拍实战&#xff1a;CMOS传感器与快门速度的黄金搭配法则 在一条每分钟处理300个瓶盖的高速灌装线上&#xff0c;质检员小王发现相机拍摄的字符总是出现拖影——这已经是本周第三次因图像模糊导致误检停线了。类似场景每天都在全球数以万计的自动化产线上演&#xff0…...

AsyncAPI通道管理终极指南:如何高效组织消息流的关键技巧

AsyncAPI通道管理终极指南&#xff1a;如何高效组织消息流的关键技巧 【免费下载链接】spec The AsyncAPI specification allows you to create machine-readable definitions of your asynchronous APIs. 项目地址: https://gitcode.com/gh_mirrors/spec/spec AsyncAPI…...

头歌平台实战:C语言文件操作中的数字提取与格式化存储

1. 头歌平台C语言文件操作实战入门 第一次接触头歌平台的C语言文件操作任务时&#xff0c;我完全被那些fopen、fscanf函数弄晕了。直到真正动手完成"数字提取与格式化存储"这个项目&#xff0c;才发现原来文件操作可以这么有趣又实用。这个项目特别适合刚学完C语言基…...

多模态融合避坑手册:为什么你的跨模态模型总掉进‘语义鸿沟’?

多模态融合避坑手册&#xff1a;为什么你的跨模态模型总掉进‘语义鸿沟’&#xff1f; 当你兴奋地将精心设计的跨模态模型投入训练&#xff0c;却发现验证集指标像过山车一样剧烈波动时&#xff0c;问题往往出在那些容易被忽视的工程细节里。上周有位工程师向我展示了他的视频…...

AMD GPU大模型部署与优化指南:基于ollama-for-amd的本地AI解决方案

AMD GPU大模型部署与优化指南&#xff1a;基于ollama-for-amd的本地AI解决方案 【免费下载链接】ollama-for-amd Get up and running with Llama 3, Mistral, Gemma, and other large language models.by adding more amd gpu support. 项目地址: https://gitcode.com/gh_mir…...

从零开始:使用Deepspeed ZeRO3优化Qwen3-8B微调,解决多卡显存不足问题

从零开始&#xff1a;使用Deepspeed ZeRO3优化Qwen3-8B微调&#xff0c;解决多卡显存不足问题 当你面对一个8B参数规模的大语言模型时&#xff0c;单卡训练往往显得力不从心。显存不足的报错就像一堵高墙&#xff0c;阻挡着许多开发者的探索之路。而多卡并行训练又带来了新的挑…...