shell基础(三)

目录

一,正则表达式

1,基础正则

2,扩展正则

3,常见正则表达式

二,文件操作四剑客

1,grep进阶

2.egrep

3,find进阶

4,sed

5,awk


一,正则表达式

1,基础正则


    a)查找特定字符        cat test.txt | grep -n 'was'
    b)利用[]查找集合字符        cat test.txt | grep -n 'sh[io]rt'          匹配i或者o
        cat test.txt | grep -n '[^w]'           排除w
        cat test.txt | grep -n '[a-h]oo'
        cat test.txt | grep -n '[0-9]'
    c)查找行首"^"与行尾"$" 
        cat test.txt | grep -n '^[A-Z]'
        cat test.txt | grep '\.$'            \ 为转义符
    d)查找任意一个字符"."与重复字符"*"
        cat test.txt | grep -n 'w..d'
        cat test.txt | grep -n 'ooo*'
    e)查找连续的字符范围"{}",需要使用转义符,"\{\}"
        cat test.txt | grep -n 'o\{2\}'
        cat test.txt | grep -n 'wo\{2,5\}d'
        cat test.txt | grep -n 'wo\{2,\}d'

2,扩展正则

a)+,重复一个或一个以上的前一个字符
    cat test.txt | grep -nE 'wo+d' 或者
    cat test.txt | egrep -n 'wo+d'
b)?,零个或者一个前一个字符
    cat test.txt | egrep -n 'bes?t'
c)|,使用或者的方式找出多个字符
    cat test.txt | egrep -n 'of|is|on'
d)(),查找组字符串
    cat test.txt | egrep -n 't(a|e)st'
e)()+,辨别多个重复的组
    cat test.txt | egrep -n 'A(xyz)+C'

3,常见正则表达式

3.1数字
    “^[0-9]*[1-9][0-9]*$” //正整数  
    “^((-\d+)|(0+))$” //非正整数(负整数 + 0)  
    “^-[0-9]*[1-9][0-9]*$” //负整数  
    “^-?\d+$” //整数 
    “^\d+(\.\d+)?$” //非负浮点数(正浮点数 + 0)  
    “^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$” //正浮点数 
    “^((-\d+(\.\d+)?)|(0+(\.0+)?))$” //非正浮点数(负浮点数 + 0) 
    “^(-?\d+)(\.\d+)?$” //浮点数 

3.2字符串
    “^[A-Z]+$” //由26个英文字母的大写组成的字符串  
    “^[a-z]+$” //由26个英文字母的小写组成的字符串  
    “^[A-Za-z0-9]+$” //由数字和26个英文字母组成的字符串  
    “^\w+$” //由数字、26个英文字母或者下划线组成的字符串

3.3Email
    “^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$” //email地址  
    “^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$”   //Email 

3.4Url 
    “^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$” //url 

3.5IP
    “^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$”   //IP地址

3.6Tel 
    /^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/     //电话号码

3.7日期校验

   /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/   //  年-月-日    yyyy-MM-dd / yy-MM-dd 格式
   "^[0-9]{4}-((0([1-9]{1}))|(1[1|2]))-(([0-2]([0-9]{1}))|(3[0|1]))$"   // 年-月- 日  yyyy-MM-dd 格式
  /^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/   // 月/日/年

二,文件操作四剑客

1,grep进阶


    选项 

      -r            递归扫描指定目录下的每一个文件
        -l            只显示匹配到指定关键字的文件名,而不是文件内容
    案例
        查看/etc目录下所有包含bash的文件名
        grep -rl bash /etc

2.egrep


    完美支持正则表达式

3,find进阶


    3.1按照权限查找        -perm
    3.2按照时间戳查找
        -atime
        -mtime
        -ctime
  3.4  -exec
        find /var/spool/mail -type f -exec rm -rf {} \;
   3.5 xargs
        find /var/spool/mail -type f | xargs rm -rf

4,sed

4.1语法
    sed [选项] '操作' 参数 
    sed [选项] -f scriptfile 参数

4.2选项
    -e:表示用指定命令或脚本处理
    -f:指定脚本文件
    -h:帮助
    -n:表示仅显示处理后的结果
    -i:直接编辑文本文件
    -r:支持扩展正则

 4.3操作

a:增加,在当前行下面以行增加指定内容
c:替换,将选定行替换
d:删除,删除指定行
i:插入,在选定行的上面插入一行
p:打印
s:替换,替换指定字符
y:字符转换

5,awk

5.1语法
    awk 选项 '模式或条件{编辑命令}' 文件1 文件2 ...
    awk -f 脚本文件 文件1 文件2 ...

5.2选项

-F    指定每行的分隔符
默认分隔符为空格

5.3内建变量

FS:指定每行的分隔符
NF:指定当前处理行的字段个数
NR:当前处理行的行号
$0:当前处理行的整行内容
$n:当前处理的第n个字段
FILENAME:处理文件名
RS:数据记录分隔,默认是\n

5.4案例

a)按行输出
    awk '{print}' test.txt          #等同cat 
    awk 'NR>=1&&NR<=3{print}' test.txt 
    awk 'NR==1,NR==3{print}' test.txt #打印1到3行
    awk 'NR%2==0{print}' test.txt     #打印偶数行
b)按段输出
    默认以"空格"分段!
    ifconfig ens33 |awk '/netmask/{print $2}' #筛选IP地址
    cat /etc/shadow | awk -F : '$2=="!!"{print $1}' #打印不能登录系统的用户
c)调用shell命令
    cat /etc/passwd | awk -F : '/bash$/{print | "wc -l"}' /etc/passwd     #统计能够登录系统的用户个数    

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

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

相关文章

【tkinter 专栏】进度条组件

文章目录 前言本章内容导图1. Progressbar 进度条组件2. Progressbar 组件的相关方法制作显示游戏加载进度的进度条3. 左右循环滚动的进度条通过循环滚动的进度条模拟进入游戏时的加载动画前言 本专栏将参考《Python GUI 设计 tkinter 从入门到实践》书籍(吉林大学出版社 ISB…

Linux内核学习(六)—— 中断(基于Linux 2.6内核)

一、中断 中断使得硬件得以发出通知给处理器。中断随时都可以产生&#xff0c;如键盘敲击就会触发中断&#xff0c;通知操作系统有按键按下。 不同设备对应的中断不同&#xff0c;而每个中断都通过一个唯一的数字标识。这些中断值通常被称为中断请求&#xff08;IRQ&#xff…

ZooKeeper(zk)与 Eureka 的区别及集群模式比较分析

​ 作者&#xff1a;zhaokk 推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 资源分享 「java、python面试题」来自UC网盘app分享&#xff0c;打开手机app&#xff…

【观察】戴尔科技:构建企业创新“韧性”,开辟数实融合新格局

过去几年&#xff0c;国家高度重视发展数字经济&#xff0c;将其上升为国家战略。其中&#xff0c;“十四五”规划中&#xff0c;就明确提出要推动数字经济和实体经济的深度融合&#xff0c;以数字经济赋能传统产业转型升级&#xff1b;而2023年年初正式发布的《数字中国建设整…

Coremail参与编制|《信创安全发展蓝皮书——系统安全分册(2023年)》

信创安全发展蓝皮书 近日&#xff0c;Coremail参与编制的《信创安全发展蓝皮书—系统安全分册&#xff08;2023年&#xff09;》重磅发布。 此次信创安全发展蓝皮书由工业和信息化部电子第五研究所联合大数据协同安全技术国家工程研究中心重磅共同发布。 本次蓝皮书涵盖信创系…

【工具】Windows操作系统上安装虚拟机VirtualBox

常见的虚拟机有以下几种: VirtualBox。这是一种免费开源的虚拟机软件,由德国Innotek公司开发,首先由Sun Microsystems公司出品。它可以在一台物理计算机上模拟多个客户机,每个客户机可以运行一个独立的操作系统,如Windows、Linux、OS/2 Warp、FreeBSD等。VMware Player。这…

多种方法实现 Nginx 隐藏式跳转(隐式URL,即浏览器 URL 跳转后保持不变)

多种方法实现 Nginx 隐藏式跳转(隐式URL,即浏览器 URL 跳转后保持不变)。 一个新项目,后端使用 PHP 实现,前端不做路由,提供一个模板,由后端路由控制。 Route::get(pages/{name}, [\App\Http\Controllers\ResourceController::class, getResourceVersion])

Java“牵手“微店商品详情快递费用数据获取方法,微店API实现批量商品快递费用数据抓取示例

微店商城是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取微店商品详情数据&#xff0c;您可以通过开放平台的接口或者直接访问微店商城的网页来获取商品详情快递费用信息。以下是两种常用方法的介绍&#xff1…

【Python原创设计】基于Python Flask 机器学习的全国+上海气象数据采集预测可视化系统-附下载链接以及详细论文报告,原创项目其他均为抄袭

基于Python Flask 机器学习的全国上海气象数据采集预测可视化系统 一、项目简介二、开发环境三、项目技术四、功能结构五、运行截图六、功能实现七、数据库设计八、源码获取 一、项目简介 在信息科技蓬勃发展的当代&#xff0c;我们推出了一款基于Python Flask的全国上海气象数…

ZooKeeper 的工作原理

ZooKeeper 的工作原理可以概括为以下几个方面: 1. 数据模型 ZooKeeper 使用树形目录节点(znode)来建模关键的数据,每个 znode 可以存储数据内容,也可以作为目录包括子节点。客户端可以在节点上设置监听器。 2. 一致性算法 ZooKeeper 使用 ZAB(ZooKeeper Atomic Broadcast)协议…

多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测

多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测 目录 多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经…

Centos 解决 XXX不在 sudoers 文件中。此事将被报告。的错误

本来想使用 sudo 拷贝一个文件&#xff0c;结果出现上面的问题&#xff01; 下面是解决方法&#xff1a; 首先登录root&#xff0c;然后执行下面的命令 vim /etc/sudoers 将你需要添加的用户带红色框线的地方&#xff0c;模仿root写一遍&#xff0c;然后保存&#xff01; …

分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测

分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测 目录 分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.BWO-TCN-Attention数据分类预测程序&#xff1b; 2.无Attention适用于MATLAB 2022b版及以上版本&#xf…

Elasticsearch算分优化方案之rescore_query

简介 今天来说一说Elasticsearch 的重新评分&#xff0c;即在检索出来一次结果的基础上在进行检索提升数据排序效果&#xff0c;但是仅对查询或者post_filter阶段返回的前多少条进行二次查询。在每个分片上进行二次检索的文档数量时可以通过window_size 控制的&#xff0c;该参…

2019年3月全国计算机等级考试真题(C语言二级)

2019年3月全国计算机等级考试真题&#xff08;C语言二级&#xff09; 第1题 负责数据库中查询操作的数据库语言是 A. 数据定义语言 B. 数据管理语言 C. 数据操纵语言 D. 数据控制语言 正确答案&#xff1a;C 第2题 有关系如下图所示&#xff0c;其违反了哪一类完整性约束 …

2023国赛数学建模思路 - 案例:感知机原理剖析及实现

文章目录 1 感知机的直观理解2 感知机的数学角度3 代码实现 4 建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法&#xff0c;其…

【Python原创设计】基于Python Flask的上海美食信息与可视化宣传网站项目-附下载方式以及往届优秀论文,原创项目其他均为抄袭

基于Python Flask的上海美食信息与可视化宣传网站&#xff08;获取方式访问文末官网&#xff09; 一、项目简介二、开发环境三、项目技术四、功能结构五、运行截图六、功能实现七、数据库设计八、源码获取 一、项目简介 随着大数据和人工智能技术的迅速发展&#xff0c;我们设…

论文速递 Nature 2023 | Heat-assisted detection and ranging

注1:本文系“计算成像最新论文速览”系列之一,致力于简洁清晰地介绍、解读非视距成像领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; CVPR, ICCV, ECCV, SIGGRAPH, TPAMI; Light‐Science & Applications, Optica 等)。 本次介绍的论文是: 2023年,Nature,“…

31.Netty源码之客户端启动流程

highlight: arduino-light 客户端启动主要流程 如果看了服务器端的启动流程&#xff0c;这里简单看下就可以了。 java package io.netty.server; ​ import io.netty.bootstrap.Bootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import …

A. Two Semiknights Meet

题目描述 可知走法为中国象棋中的象的走法 解题思路 利用结构体来存储两个 K K K的位置 x , y x,y x,y&#xff0c;因为两个 K K K同时走&#xff0c;所以会出现两种情况 相向而行&#xff0c;两者距离减少 相反而行&#xff0c;两者距离不变 我们完全可以不考虑格子是好…