正则表达式 通配符 awk文本处理工具

news2024/11/24 11:32:56

目录

什么是正则表达式

概念

正则表达式的结构

正则表达式的组成

元字符

元字符点(.)

代表字符.

点值表示点需要转义  \

r..t  代表r到t之间任意两个字符

过滤出小写

过滤出非小写

space空格  [[:space:]]

表示次数

位置锚定

例: 

分组 或 

扩展

表示邮箱

表示手机号

AWk

格式

选项

表达式

处理动作

例:

awk 常见的内置变量

拓展

awk数组计算   (默认使用关联数组)


什么是正则表达式

概念

正则表达式(Regular Expression,在代码中常简写为regex、regexp或RE),又称规则表达式,是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。

正则表达式的结构

shell: /bin/bash

正则表达式:匹配的是文章中的字符

通配符:匹配的是文件名 (?任意单个字符)

元字符:不表示本来的含义,在正则表达式中有特殊含义的字符

正则表达式的组成

1.代表字符     单个任意字符  [ ]单个字符    [a b c] a或b或c

2.表示次数  

3.位置锚定  ^  $

4.分组 或

元字符

. 匹配任意单个字符,可以是一个是汉字

[ ] 匹配指定范围内的任意单个字符  [af]

[^]  匹配指定范围外的任意单个字符 [^af]

元字符点(.)

代表字符.

点值表示点需要转义  \

r..t  代表r到t之间任意两个字符

过滤出小写

过滤出非小写

space空格  [[:space:]]

表示次数

*     表示0到正无穷

.*    表示任意长度的字符 (不包括0次)

\?   可有可无   0或1次

\+   一次及以上, 一次到正无穷   >=1   ( [[:alnum:]]  字母和数字 )

\{3\}   前面字符出现最少三次    \{N\}

\{3,5}  前面字符出现3到5次  \{n,m\}

位置锚定

^ 开头

$ 结尾

^[[:space:]]*$  空白行

\b  字符串开头

\<  字符串开头

\b  字符串结尾

\>  字符串结尾

例: 

词首锚定

词尾锚定

分组 或 

分组  ( ) 使用括号将需要组合的字符  括起来

或  : \|    

扩展

grep -E 使用拓展表达式 

egrep  默认使用扩展表达式   (简便操作)

表示邮箱

echo "xyc1234@qq.com" |grep -E "[[:alnum:]_]+@[[:alnum:]_]+\.[[:alnum:]_]+"
xyc1234@qq.com

表示手机号

echo "13384402293"|grep -E "\b1[3456789][0-9]{9}\b"
13384402293

AWk

AWK 是一种与语言,文本处理工具  加载一行处理一行

vim 也是文本处理工具  缺点:内存不足时打不开文件   

vim是将整个文件加载到内存中处理,如果内存不够大,无法打开处理文件

akw的内置变量和shell环境中的变量会有冲突 ,必须使用‘  ’单引号

awk 取列   主要功能   

格式

awk  选项  ‘表达式 {处理动作}‘

选项

-F  指定分隔符

-V  指定变量

表达式

awk 的语言的表达式

1.不写没有

2.找到特定行

处理动作

print  打印

prontf  打印

awk ’{print $2}'  以空格为分隔符  取第n列 ,n大于等于0

awk  内置变量

$0(全文)      $1(第一列)    $2(第二列)

例:

  awk 'root‘开头的行{print}'

[root@localhost/lll] # awk '/^root/ {print } ' /etc/passwd
root:x:0:0:root:/root:/bin/bash

awk  内置变量 $0(全文)      $1(第一列)    $2(第二列)

查看磁盘大小 打印第五行

awk 常见的内置变量

awk 选项  ‘模式{print }’

FS  指定分隔符   默认空格   与 “-F”作用相同 -v "FS=:"

[root@localhost~] # awk -v FS=':' '{print $1FS$3}' /etc/passwd   
#此处FS 相当于于变量  -v 变量赋值  相当于 指定: 为分隔符
root:0
bin:1
daemon:2
adm:3
lp:4
sync:5
shutdown:6
halt:7

OFS  输出时的分割符

[root@localhost~] # awk -v FS=':' -v OFS='==' '{print $1,$3}' /etc/passwd
root==0
bin==1
daemon==2
adm==3
lp==4
sync==5
shutdown==6
halt==7
mail==8
operator==11
games==12

NF  打印每行有多少字段  倒数第二列 $(NF-1)    倒数第一列$NF

[root@localhost~] # awk -F: '{print NF}' /etc/passwd
7
7
7
7
7
7
7
[root@localhost~] # df |awk '{print $(NF-1) }' #倒数第二行
已用%
14%
0%
0%
1%
0%
1%
4%
1%
1%
1%
18%
1%
0%
[root@localhost~] # df |awk '{print $(NF) }'
挂载点
/
/dev
/dev/shm
/run
/sys/fs/cgroup
/123
/456
/zzz
/mnt
/home
/boot
/run/user/42
/run/user/0

NR  显示行号       awk ‘NR==2 {print $1}' 打印第二行的第一个字段

[root@localhost~] # awk '{print $1,NR}' /etc/passwd   #显示第一列的行号
root:x:0:0:root:/root:/bin/bash 1
bin:x:1:1:bin:/bin:/sbin/nologin 2
daemon:x:2:2:daemon:/sbin:/sbin/nologin 3
adm:x:3:4:adm:/var/adm:/sbin/nologin 4
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 5
sync:x:5:0:sync:/sbin:/bin/sync 6
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 7
halt:x:7:0:halt:/sbin:/sbin/halt 8
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 9
operator:x:11:0:operator:/root:/sbin/nologin 10
[root@localhost~] # awk 'NR==2 {print $1}' /etc/passwd
#只取第二行的第一个字段
bin:x:1:1:bin:/bin:/sbin/nologin

拓展

打印出几点几分到几点几分的日志?

awk '/几点几分/,/几点几分/' 日志文件

awk数组计算   (默认使用关联数组)

关联数组下标为单词

awk  建立数组

[root@localhost~] # awk 'BEGIN {a[1]="lisi"; a[2]="liwu";print a[1],a[2]}'
lisi liwu
awk 'BEGIN {a[1]="lisi"; a[2]="liwu";for(i in a) print a[1],a[2]}'
lisi liwu
lisi liwu

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

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

相关文章

笔记十九*、选中高亮和嵌套路由使用

19.1 选中高亮 NavLink App.jsx import React from "react"; import {NavLink, useRoutes} from "react-router-dom"; import routes from "./routes/index.jsx"; import "./app.css"const App () > {const element useRoutes(…

“文件批量改名专家:轻松自定义重命名并智能导出文件信息“

在日常工作中&#xff0c;处理大量文件时&#xff0c;往往需要一款得力的文件批量改名工具来协助我们高效、有序地进行文件管理。今天&#xff0c;我要向大家介绍一款强大的文件批量改名工具&#xff0c;它不仅支持统一自定义重命名&#xff0c;还能将相关信息导出到表格中&…

一、Oceanbase基础

一、集群相关概念 集群&#xff1a;整个分布式数据库。Region&#xff1a;表示区域&#xff0c;是地域的逻辑概念&#xff0c;如1个城市&#xff0c;1个集群可以有多个Region&#xff0c;用于跨城市远 距离容灾。Zone&#xff1a;表示分区&#xff0c;是机房或机架的逻辑概念…

[PyTorch][chapter 1][李宏毅深度学习-AI 简介]

前言&#xff1a; 李宏毅深度学习从2017-2023的系列课程总结 内容 章节 强化学习 11 李宏毅机器学习 【2017】 40 李宏毅机器学习深度学习(完整版)国语 【2020】 119 李宏毅大佬的深度学习与机器学【2022】 90 李宏毅机器学习完整课程【2023】 43 总结 303 目录…

lenovo联想笔记本YogaPro 14s IRP8D 2023款(83BU)原装出厂Windows11预装OEM系统

链接&#xff1a;https://pan.baidu.com/s/1s7PcN-y8RyHSV7uJQzC5OQ?pwddy9y 提取码&#xff1a;dy9y 联想电脑原厂W11系统&#xff0c;自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;16GB或以上的U盘…

百度手机浏览器关键词排名优化——提升关键词排名 开源百度小程序源码系统 附带完整的搭建教程

百度作为国内领先的搜索引擎&#xff0c;一直致力于为用户提供最优质的信息服务。在移动互联网时代&#xff0c;手机浏览器成为了用户获取信息的主要渠道。而小程序作为轻量级的应用程序&#xff0c;具有即用即走、无需下载等优势&#xff0c;越来越受到用户的青睐。然而&#…

C语言第三十四弹--矩形逆置

C语言实现矩阵逆置 逆置结果如图 思路&#xff1a;通过观察逆置结果&#xff0c;首先发现行数和列数都发生了调换。其次观察逆置前后数字对应的下标&#xff0c;逆置前数字对应下标为:[x][j] 逆置后数字对应下标为&#xff1a;[y][x]。综上&#xff0c;就可以实现矩阵逆置。 …

ChromeDriver最新版本下载与安装方法

关于ChromeDriver最新下载地址&#xff1a;https://googlechromelabs.github.io/chrome-for-testing/ 下载与安装 setp1&#xff1a;查看Chrome浏览器版本 首先&#xff0c;需要检查Chrome浏览器的版本。请按照以下步骤进行&#xff1a; 打开Chrome浏览器。 点击浏览器右上角…

设计模式—迪米特原则(LOD)

1.背景 1987年秋天由美国Northeastern University的Ian Holland提出&#xff0c;被UML的创始者之一Booch等普及。后来&#xff0c;因为在经典著作《 The Pragmatic Programmer》而广为人知。 2.概念 迪米特法则&#xff08;Law of Demeter&#xff09;又叫作最少知识原则&…

14 网关实战:网关聚合API文档

上节课介绍了网关层的认证鉴权,今天这节介绍一下网关层如何聚合API接口文文档。 为什么需要聚合API接口文档? 大型微服务系统模块众多,木谷博客系统就有9个,如果这些服务的接口地址没有一个统一,那么客户端将要保存每个服务的接口地址,这个肯定是不现实。 先来看一下A…

小航助学题库蓝桥杯题库stem选拔赛(22年3月)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSDN博客 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSD…

Mo0n(月亮) MCGS触摸屏在野0day利用,强制卡死锁屏

项目:https://github.com/MartinxMax/Mo0n 后面还会不会在,我可就不知道了奥…还不收藏点赞关注 扫描存在漏洞的设备 #python3 Mo0n.py -scan 192.168.0.0/24 入侵锁屏 #python3 Mo0n.py -rhost 192.168.0.102 -lock 解锁 #python3 Mo0n.py -rhost 192.168.0.102 -unlock …

Jetpack Compose中适应性布局的新API

Jetpack Compose中适应性布局的新API 针对大屏幕优化的新组合件。 使用新的Material适应性布局&#xff0c;为手机、可折叠设备和平板电脑构建应用程序变得更加简单&#xff01;市场上各种不同尺寸的Android设备的存在挑战了构建应用程序时对屏幕尺寸的通常假设。开发者不应该…

什么是动态住宅IP?它有什么用途?

随着网络的迅速发展&#xff0c;许多人对代理IP已经有了比较深刻的认识&#xff0c;并且广泛地运用到了各自的业务中&#xff0c;尤其在跨境的相关业务中表现尤其卓越。对于代理IP的类别&#xff0c;也需要根据自己的业务类型具体选择最合适的&#xff0c;那么今天IPFoxy就给大…

TS 函数及多态

TS 能推导出函数体中的类型&#xff0c;但多数情况下无法推导出参数的类型&#xff0c;只有少数特殊情况下能根据上下文推导参数的类型。返回类型能推导出&#xff0c;不过也可以显式注解。 1 声明和调用函数 一般来说&#xff0c;在方法中的this值为调用该方法时位于点号左侧…

VsCode 调试 MySQL 源码

1. 启动 MySQL 2. 查看 MySQL 进程号 [root ~]# ps -ef | grep mysqld root 21479 1 0 Nov01 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir/usr/local/mysql/data --pid-file/usr/local/mysql/data/mysqld.pid root 26622 21479 0 …

CSS新手入门笔记整理:CSS字体样式

字体类型&#xff1a;font-family 语法 font-family&#xff1a;字体1,字体2,...,字体n; font-family可以指定多种字体。使用多个字体时&#xff0c;将按从左到右的顺序排列&#xff0c;并且以英文逗号&#xff08;,&#xff09;隔开。如果我们不定义font-family&#xff0c…

Elasticsearch启动失败问题汇总

版本elasticsearch-8.11.1&#xff0c;解压安装完后&#xff0c;修改安装目录下conf/jvm.options&#xff0c; 默认配置如下&#xff1a; -Xms4g -Xmx4g 默认的配置占用内存太多了&#xff0c;调小一些&#xff1a; -Xms256m -Xmx256m由于es和jdk是一个强依赖的关系&#xff0…

代码随想录算法训练营第五十六天| 647. 回文子串 516.最长回文子序列

文档讲解&#xff1a;代码随想录 视频讲解&#xff1a;代码随想录B站账号 状态&#xff1a;看了视频题解和文章解析后做出来了 647. 回文子串 class Solution:def isPalindrome(self, string):left, right 0, len(string) - 1while left < right:if string[left] ! stri…

CV计算机视觉每日开源代码Paper with code速览-2023.11.22

点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【语义分割】Mobile-Seed: Joint Semantic Segmentation and Boundary Detection for Mobile Robots 论文地址&#xff1a;https://arxiv.or…