day019-特殊符号、正则表达式与三剑客

文章目录

  • 1. 磁盘空间不足-排查流程
  • 2. 李导推荐书籍
    • 2.1 大话存储
    • 2.2 性能之巅
  • 3. 特殊符号
    • 3.1 引号系列(面试题)
    • 3.2 重定向符号
      • 3.2.1 cat与重定向
      • 3.2.2 tr命令:替换字符
      • 3.2.3 xargs:参数转换
      • 3.2.4 标准全量追加重定向
  • 4. 正则表达式
    • 4.1 基础正则
      • 4.1.1 测试文件
      • 4.1.2 查找以I开头的行
      • 4.1.3 查找以m结尾的行
      • 4.1.4 查找非空行
      • 4.1.5 排除sshd配置文件中空行和以#开头的行
      • 4.1.6 过滤出以I开头以!结尾的行
      • 4.1.7 过滤出含有大写字符的行
      • 4.1.8 过滤出含有大写字符或数字的行
      • 4.1.9 过滤出文件中以I或m或n开头的并且以!或数字结尾的行
      • 4.1.10 过滤出以.结尾的行
    • 4.2 扩展正则
      • 4.2.1 查询sshd或rsyslog进程
      • 4.2.2 统计文件中单词次数,取出前5
      • 4.2.3 统计文件中字母次数,取出前5
      • 4.2.4 过滤最少有3个最多有5个连续数字的行
      • 4.2.5 小括号():表示一个整体
  • 5. awk和正则
    • 5.1 取出passwd文件中第1、2列和最后一列
    • 5.2 取出ip a命令中的ip地址
    • 5.3 获取文件中系统的运行时间
    • 5.4 awk取行
  • 6. 思维导图

1. 磁盘空间不足-排查流程

在这里插入图片描述

2. 李导推荐书籍

2.1 大话存储

在这里插入图片描述

2.2 性能之巅

在这里插入图片描述

3. 特殊符号

3.1 引号系列(面试题)

引号说明
反引号执行命令
单引号所见即所得。单引号中的内容不会被解析,直接进行输出。
双引号一些特殊符号会被解析:``,$(),$……
不加引号特殊符号会被解析,额外支持{}、*通配符

3.2 重定向符号

重定向符号说名使用
>或1>标准输出重定向创建文件并写入内容
>>或1>>标准输出追加重定向修改配置文件
2>标准错误输出重定向较少单独使用
2>>标准错误输出追加重定向较少单独使用
>>oldboy.log 2>&1;
&>>oldboy.log
正确输出和错误输出都写入到同一个文件运行脚本或命令时经常使用
<或0<标准输入重定向,与特定命令使用,读取文件内容:tr、xargs其他命令几乎不会用
<<或0<<标准输入追加重定向,cat命令向文件中批量写入多行内容cat常用

3.2.1 cat与重定向

  • cat命令写文件

在这里插入图片描述

  • EOF为标识符标识内容的结束,用其他符号也行。

3.2.2 tr命令:替换字符

[root@oldboy99-Kylin /oldboy]# cat w.txt 16:26:42 up 83 days,  7:42,  1 user,  load average: 0.00, 0.00, 0.0007:05:48 up 18:42,  2 users,  load average: 0.01, 0.01, 0.00
[root@oldboy99-Kylin /oldboy]# tr 'a-z' 'A-Z' < w.txt 16:26:42 UP 83 DAYS,  7:42,  1 USER,  LOAD AVERAGE: 0.00, 0.00, 0.0007:05:48 UP 18:42,  2 USERS,  LOAD AVERAGE: 0.01, 0.01, 0.00
  • tr接受标准输入的数据,将数据中的小写字符都替换成本大写字符

3.2.3 xargs:参数转换

  • xargs的作用:从标准输入接受多个参数并转换成多行
  • seq num:形成一列的序列数字
[root@oldboy99-Kylin /oldboy]# seq 10 > num.txt
[root@oldboy99-Kylin /oldboy]# cat num.txt
1
2
3
4
5
6
7
8
9
10
[root@oldboy99-Kylin /oldboy]# xargs -n 3 < num.txt
1 2 3
4 5 6
7 8 9
10

3.2.4 标准全量追加重定向

  • >>oldboy.log 2>&1
  • &>>oldboy.log
[root@oldboy99-Kylin /oldboy]# echo skx >> oldboy.log 2>&1
[root@oldboy99-Kylin /oldboy]# echo skx >> oldboy.log 2>&1
[root@oldboy99-Kylin /oldboy]# echo skx >> oldboy.log 2>&1
[root@oldboy99-Kylin /oldboy]# echo1 skx >> oldboy.log 2>&1
[root@oldboy99-Kylin /oldboy]# echo1 skx >> oldboy.log 2>&1
[root@oldboy99-Kylin /oldboy]# echo1 skx >> oldboy.log 2>&1
[root@oldboy99-Kylin /oldboy]# cat oldboy.log 
skx
skx
skx
-bash: echo1: command not found
-bash: echo1: command not found
-bash: echo1: command not found

4. 正则表达式

正则表达式:regular expression,对字符进行查找或过滤。

正则表达式符号命令
基础正则^、&、.、*、[]grep、sed、awk
扩展正则|、+、{}、()、?egrep/grep -E、sed -r、awk

4.1 基础正则

4.1.1 测试文件

cat >/oldboy/re.txt<<EOF
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and
chinese chess!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
EOF

4.1.2 查找以I开头的行

[root@oldboy99-Kylin /oldboy]# grep '^I' re.txt -n
1:I am oldboy teacher!
2:I teach linux.
4:I like badminton ball ,billiard ball and chinese chess!

4.1.3 查找以m结尾的行

  • 文件中以m结尾的行最后还有空格
  • cat -A:显示文件中的隐藏字符
[root@oldboy99-Kylin /oldboy]# cat -A re.txt 
I am oldboy teacher!$
I teach linux.$
$
I like badminton ball ,billiard ball and chinese chess!$
my blog is http://oldboy.blog.51cto.com  $
our size is http://blog.oldboyedu.com  $
$
my qq is 49000448$
not 4900000448.$
$
my god ,i am not oldbey,but OLDBOY!$
[root@oldboy99-Kylin /oldboy]# grep 'm  $' re.txt 
my blog is http://oldboy.blog.51cto.com  
our size is http://blog.oldboyedu.com  

4.1.4 查找非空行

  • ^$:表示过滤空行
[root@oldboy99-Kylin /oldboy]# grep -vn '^$' re.txt 
1:I am oldboy teacher!
2:I teach linux.
4:I like badminton ball ,billiard ball and chinese chess!
5:my blog is http://oldboy.blog.51cto.com  
6:our size is http://blog.oldboyedu.com  
8:my qq is 49000448
9:not 4900000448.
11:my god ,i am not oldbey,but OLDBOY!

4.1.5 排除sshd配置文件中空行和以#开头的行

grep -Evn '^$|^#' /etc/ssh/sshd_config

4.1.6 过滤出以I开头以!结尾的行

  • .:表示任意字符
  • *:表示前一个字符出现0次或多次
[root@oldboy99-Kylin /oldboy]# grep '^I.*!$' re.txt 
I am oldboy teacher!
I like badminton ball ,billiard ball and chinese chess!

4.1.7 过滤出含有大写字符的行

[root@oldboy99-Kylin /oldboy]# grep -n '[A-Z]' re.txt 
1:I am oldboy teacher!
2:I teach linux.
4:I like badminton ball ,billiard ball and chinese chess!
11:my god ,i am not oldbey,but OLDBOY!

4.1.8 过滤出含有大写字符或数字的行

[root@oldboy99-Kylin /oldboy]# grep -n '[A-Z0-9]' re.txt 
1:I am oldboy teacher!
2:I teach linux.
4:I like badminton ball ,billiard ball and chinese chess!
5:my blog is http://oldboy.blog.51cto.com  
8:my qq is 49000448
9:not 4900000448.
11:my god ,i am not oldbey,but OLDBOY!

4.1.9 过滤出文件中以I或m或n开头的并且以!或数字结尾的行

[root@oldboy99-Kylin /oldboy]# grep '^[Imn].*[0-9!]$' re.txt 
I am oldboy teacher!
I like badminton ball ,billiard ball and chinese chess!
my qq is 49000448
my god ,i am not oldbey,but OLDBOY!

4.1.10 过滤出以.结尾的行

[root@oldboy99-Kylin /oldboy]# grep -n '\.$' re.txt 
2:I teach linux.
9:not 4900000448.
####################################################
[root@oldboy99-Kylin /oldboy]# grep -n '[.]$' re.txt 
2:I teach linux.
9:not 4900000448.

4.2 扩展正则

4.2.1 查询sshd或rsyslog进程

[root@oldboy99-Kylin /oldboy]# ps -ef |grep -E '[s]shd|[r]syslog'
root         866       1  0 08:27 ?        00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root         908       1  0 08:27 ?        00:00:01 /usr/sbin/rsyslogd -n -i/var/run/rsyslogd.pid
root        1670     866  0 09:55 ?        00:00:00 sshd: root [priv]
root        1696    1670  0 09:55 ?        00:00:00 sshd: root@pts/0

4.2.2 统计文件中单词次数,取出前5

  • +:前一个字符出现一次或多次
  • -o:输出匹配的字符
[root@oldboy99-Kylin /oldboy]# grep -Eo '[a-zA-Z]+' re.txt |sort |uniq -c |sort -k1nr |head -53 blog3 I3 is3 my2 am

4.2.3 统计文件中字母次数,取出前5

[root@oldboy99-Kylin /oldboy]# grep -Eo  '[a-zA-Z]' re.txt |sort |uniq -c |sort -k1nr |head -518 o15 l12 b11 i11 t

4.2.4 过滤最少有3个最多有5个连续数字的行

[root@oldboy99-Kylin /oldboy]# grep -E '[0-9]{3,5}' re.txt 
my qq is 49000448
not 4900000448.

4.2.5 小括号():表示一个整体

[root@oldboy99-Kylin /oldboy]# lscpu |grep -E 'L(1d|1i|2|3)'
L1d cache:                          32 KiB
L1i cache:                          32 KiB
L2 cache:                           256 KiB
L3 cache:                           8 MiB
#############################################################
[root@oldboy99-Kylin /oldboy]# lscpu |grep -E 'L(1[di]|[23])'
L1d cache:                          32 KiB
L1i cache:                          32 KiB
L2 cache:                           256 KiB
L3 cache:                           8 MiB

5. awk和正则

  • -F:Field Separator,字段分隔符

5.1 取出passwd文件中第1、2列和最后一列

[root@oldboy99-Kylin ~]# awk -F ':' '{print $1,$2,$NF}' /etc/passwd |head -5 |column -t
root    x  /bin/bash
bin     x  /sbin/nologin
daemon  x  /sbin/nologin
adm     x  /sbin/nologin
lp      x  /sbin/nologin

5.2 取出ip a命令中的ip地址

  • awk按照空格或斜线作为分隔符
[root@oldboy99-Kylin ~]# ip a show ens33 |awk -F '[ /]+' 'NR==3{print $3}'
10.0.0.200

5.3 获取文件中系统的运行时间

文件内容:

cat >> w.txt <<EOF
16:26:42 up 83 days,  7:42,  1 user,  load average: 0.00, 0.00, 0.00
07:05:48 up 18:42,  2 users,  load average: 0.01, 0.01, 0.00
EOF

[root@oldboy99-Kylin /oldboy]# awk -F 'up +|, +[0-9]+ +user' '{print $2}' w.txt 
83 days,  7:42
18:42

在这里插入图片描述

5.4 awk取行

  • awk ‘NR==3’
  • awk ‘NR>=3’
  • awk ‘NR>=3&&NR<=10’
  • awk ‘/匹配行的正则表达式/’ 文件名

  • 在passwd文件中过滤包含root或oldboy的用户信息
[root@oldboy99-Kylin ~]# awk '/^root|^oldboy/' /etc/passwd
root:x:0:0:root:/root:/bin/bash
oldboy:x:1000:1000::/home/oldboy:/bin/bash

6. 思维导图

【金山文档】 思维导图 https://www.kdocs.cn/l/co3I7PtpTYQX

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/82340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3 watch 使用与注意事项

watch 的第一个参数可以是不同形式的“数据源”&#xff1a;它可以是一个 ref (包括计算属性)、一个响应式对象、一个 getter 函数、或多个数据源组成的数组&#xff1a; 1&#xff1a;reactive监听对象 <template><div><h1>情况二&#xff1a;watchEffect…

医学写作供应商管理全流程优化

1. 供应商筛选与评估 1.1 资质审核 1.1.1 行业认证核查 核查供应商的行业认证,如AMWA医学写作认证、EMWA会员资格、ISO 9001等,确保其专业资质。 1.1.2 团队背景评估 评估团队成员专业背景,包括医学/药学学位、临床试验经验、发表记录,保障专业能力。 1.1.3 国际规范熟悉…

固态硬盘颗粒类型、选型与应用场景深度解析

一、固态硬盘颗粒类型的技术演进与特性 固态硬盘&#xff08;SSD&#xff09;的性能核心在于存储单元结构的设计&#xff0c;这种设计直接决定了数据的存储密度、读写速度、耐久度及成本效益。当前主流的闪存颗粒类型呈现从单层到多层架构的梯度演进&#xff0c;其技术特征与应…

CAPL自动化-诊断Demo工程

文章目录 前言一、诊断控制面板二、诊断定义三、发送诊断通过类.方法的方式req.SetParameterdiagSetParameter四、SendRequestAndWaitForResponse前言 本文将介绍CANoe的诊断自动化测试,工程可以从CANoe的 Sample Configruration 界面打开,也可以参考下面的路径中打开(以实…

嵌入式预处理链接脚本lds和map文件

在嵌入式开发中&#xff0c;.lds.S 文件是一个 预处理后的链接脚本&#xff08;Linker Script&#xff09;&#xff0c;它结合了 C 预处理器&#xff08;Preprocessor&#xff09; 的功能和链接脚本的语法。它的核心作用仍然是 定义内存布局和链接规则&#xff0c;但通过预处理…

PT5F2307触摸A/D型8-Bit MCU

1. 产品概述 ● PT5F2307是一款51内核的触控A/D型8位MCU&#xff0c;内置16K*8bit FLASH、内部256*8bit SRAM、外部512*8bit SRAM、触控检测、12位高精度ADC、RTC、PWM等功能&#xff0c;抗干扰能力强&#xff0c;适用于滑条遥控器、智能门锁、消费类电子产品等电子应用领域。 …

RabbitMQ——消息确认

一、消息确认机制 生产者发送的消息&#xff0c;可能有以下两种情况&#xff1a; 1> 消息消费成功 2> 消息消费失败 为了保证消息可靠的到达消费者&#xff08;&#xff01;&#xff01;&#xff01;注意&#xff1a;消息确认机制和前面的工作模式中的publisher confi…

C++异步(1)

什么是异步? 异步就是多个线程是同时执行的&#xff0c;与之相对的就是线程同步&#xff0c;二者都应用在并发的场景上。 异步的特点 异步执行的任务无需等待其他任务完成&#xff0c;其本身是通过非阻塞的方式执行的&#xff0c;不依赖前驱任务&#xff0c;通常用于IO密集…

向量数据库Milvus03-高级功能与性能调优

Milvus高级功能与性能调优 目录 高级特性详解性能调优技巧生产环境部署最佳实践总结与展望 1. 高级特性详解 1.1 多索引兼容 Milvus 支持多种索引类型&#xff08;如 HNSW、IVF_PQ、IVF_FLAT&#xff09;的混合使用&#xff0c;以适应不同场景的需求。 HNSW&#xff08;Hier…

5月24日day35打卡

模型可视化与推理 知识点回顾&#xff1a; 三种不同的模型可视化方法&#xff1a;推荐torchinfo打印summary权重分布可视化进度条功能&#xff1a;手动和自动写法&#xff0c;让打印结果更加美观推理的写法&#xff1a;评估模式 作业&#xff1a;调整模型定义时的超参数&#x…

野火鲁班猫(arrch64架构debian)从零实现用MobileFaceNet算法进行实时人脸识别(三)用yolov5-face算法实现人脸检测

环境直接使用第一篇中安装好的环境即可 先clone yolov5-face项目 git clone https://github.com/deepcam-cn/yolov5-face.git 并下载预训练权重文件yolov5n-face.pt 网盘链接: https://pan.baidu.com/s/1xsYns6cyB84aPDgXB7sNDQ 提取码: lw9j &#xff08;野火官方提供&am…

R语言科研编程-柱状图

R语言简介 R语言是一种开源的统计计算和图形绘制编程语言&#xff0c;广泛应用于数据分析、机器学习、数据可视化等领域。它由Ross Ihaka和Robert Gentleman于1993年开发&#xff0c;具有丰富的统计函数库和图形功能&#xff0c;尤其适合数据科学研究和可视化任务。 使用R语言…

Android-Handler学习总结

​​面试官​&#xff1a;你好&#xff01;我看你简历里提到熟悉 Android 的 Handler 机制&#xff0c;能简单说一下它的作用吗&#xff1f; ​候选人​&#xff1a; Handler 是 Android 中用来做线程间通信的工具。比如Android 应用的 UI 线程&#xff08;也叫主线程…

【iOS】分类、扩展、关联对象

分类、扩展、关联对象 前言分类扩展扩展和分类的区别关联对象key的几种用法流程 总结 前言 最近的学习中笔者发现自己对于分类、扩展相关知识并不是很熟悉&#xff0c;刚好看源码类的加载过程中发现有类扩展与关联对象详解。本篇我们来探索一下这部分相关知识&#xff0c;首先…

30.第二阶段x64游戏实战-认识网络数据包发送流程

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 上一个内容&#xff1a;29.第二阶段x64游戏实战-技能冷却 发送数据包的方式&#xff08;函数&#xff09;操作系统提供…

【每日一题】【前缀和优化】【前/后缀最值】牛客练习赛139 B/C题 大卫的密码 (Hard Version) C++

牛客练习赛139 B题 大卫的密码 (Easy Version) 牛客练习赛139 C题 大卫的密码 (Hard Version) 大卫的密码 题目背景 牛客练习赛139 题目描述 给定一个 n m n\times m nm的网格图&#xff0c;我们使用 ( i , j ) (i,j) (i,j)表示网格中从上往下数第 i i i行和从左往右数第…

文件夹图像批处理教程

前言 因为经常对图像要做数据清洗&#xff0c;又很费时间去重新写一个&#xff0c;我一直在想能不能写一个通用的脚本或者制作一个可视化的界面对文件夹图像做批量的修改图像大小、重命名、划分数据训练和验证集等等。这里我先介绍一下我因为写过的一些脚本&#xff0c;然后我…

【Unity实战笔记】第二十四 · 使用 SMB+Animator 实现基础战斗系统

转载请注明出处&#xff1a;&#x1f517;https://blog.csdn.net/weixin_44013533/article/details/146409453 作者&#xff1a;CSDN|Ringleader| 1 结构 1.1 状态机 1.2 SMB 2 代码实现 2.1 核心控制 Player_Base_SMB 继承 StateMachineBehaviour &#xff0c;控制变量初始…

Python虚拟环境再PyCharm中自由切换使用方法

Python开发中的环境隔离是必不可少的步骤,通过使用虚拟环境可以有效地管理不同项目间的依赖,避免包冲突和环境污染。虚拟环境是Python官方提供的一种独立运行环境,每个项目可以拥有自己单独的环境,不同项目之间的环境互不影响。在日常开发中,结合PyCharm这样强大的IDE进行…

大模型智能体入门扫盲——基于camel的概述

前言 本篇博客想带读者进行一个智能体入门扫盲&#xff0c;了解基础知识&#xff0c;为什么用camel呢&#xff0c;因为小洛发现它们文档对这种智能体的基本组件介绍得很全面深入。 基础概念 agent 一个典型的agent智能体包含三个核心部分&#xff1a; 感知模块&#xff1…