Grep文本查找和sed文本编辑

2024-06-22 18:32

本文主要是介绍Grep文本查找和sed文本编辑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

grep匹配字符

三种正则引擎参数:

  • -G:POSIX基本正则表达式,BRE
  • -E:POSIX扩展正则表达式,ERE
  • -p:Perl正则表达式,PCRE
    语法:
grep [参数] PATTERN [file]
  • -c:只打印每个file中的匹配行数目
  • -i:忽略大小写
  • -n:输出的同时打印行号
  • -v:反选,输出不匹配行的内容
  • -r:递归匹配查找
  • -R:递归匹配查找,但会遍历所有符号链接
  • -A n:n为正整数,表示after,除了列出匹配行之外,还列出后面的n行
  • -B n:n为正整数,表示before,除了列出匹配行之外,还列出前面的n行

实例1:
使用参数-R递归查找满足条件的文件

grep -R sh /etc/passwd

在这里插入图片描述
实例2:
使用参数-n输出查找内容和行号

grep -n sh /etc/passwd

在这里插入图片描述
实例3:
使用参数-i忽略大小写输出内容

grep -i SH /etc/passwd

在这里插入图片描述
实例4:
使用参数-v屏蔽匹配的相关行,输出内容

grep -v usr /etc/passwd

在这里插入图片描述
实例5:
使用参数-B n输出满足条件的内容前5行内容:

grep -B 5 lcc /etc/passwd

在这里插入图片描述

grep匹配字符

字符匹配:

字符说明
.匹配除“\n”以外的任何单个字符
\转义字符,将下一个字符标记为特殊字符或原义字符
[…]匹配指定范围内的任意字符
[^…]匹配任何不在指定范围内的任意字符
\d匹配0-9的数字
\D匹配除了0-9的任意字符
\w匹配单个数字或字符或者下划线(),相当于[0-9a-zA-Z]
\W匹配非数字或字符或下划线(),相当于[^0-9a-zA-Z]
\s匹配一个空白字符
\S匹配非空字符,相当于[^\s]

实例1:
使用匹配字符.,查询c*n的字符

grep -n 'c.n' blankspace.txt

在这里插入图片描述
实例2:
使用匹配字符[…],查询带vr的字符

grep -n '[vr]' blankspace.txt

在这里插入图片描述
实例3:
使用匹配字符\d,查询p加数字加p的字符和查询p加非数字加p的字符

grep -n 'p\dp' blankspace.txt
grep -n 'p-Dp' blankspace.txt

在这里插入图片描述

实例4:
匹配字符\w,查找y+单个字符+g的字符

grep -n 'y\wg' blankspace.txt

在这里插入图片描述
实例5:
使用匹配字符\s,查找n+空白字符+r的字符

grep -n 'n\s+r' blankspace.txt

在这里插入图片描述

数量匹配

量词说明
{n}匹配确定的n次
*匹配前面的子表达式零次或多次 l
+匹配前面的子表达式一次或者多次
?匹配前面的子表达式零次或者一次
{n,}至少匹配n次
{n,m}最少匹配n次且最多匹配m次,n<=m

实例1:
使用*,匹配lo开头的字符

grep -n 'lo*' blankspace.txt

在这里插入图片描述

位置匹配

限字符说明
^匹配输入字符串的开始位置
$匹配输入字符串的结束位置
\b匹配单词的边界位置
\B匹配不是单词边界的位置

实例1:
^

grep -n '^Lo' blankspace.txt

在这里插入图片描述
实例2:
$

grep -n 'd$' blankspace.txt

在这里插入图片描述
实例3:
\b

grep -n 's\b' blankspace.txt

在这里插入图片描述
实例4:
\B

grep -n 's\B' blankspace.txt

在这里插入图片描述

其他字符说明

字符说明
[:alnum:]表示所有十进制数字和英文字符
[:alpha:]表示所有英文字母
[:lower:]表示所有小写字母
[:upper:]表示所有大写字母
[:digit:]表示所有数字
[:blank:]表示空格键和[tab]键
[:cntrl:]表示键盘上的控制键即tab,delete
[:graph:]包含[:alnum:],[:punct:]
[:print:]表示任何可以被输出的字符
[:punct:]表示标点符号,即:"’?!;:#$…
[:space:]表示任何会产生空白的字符,空格键,tab键
[:xdigit:]表示16进制的数字

实例1:

grep -n '[[:alnum:]]r' blankspace.txt

在这里插入图片描述
实例2:

grep -n '[[:digit:]]' blankspace.txt

在这里插入图片描述
实例3:

grep -n '[[:punct:]]' blankspace.txt

在这里插入图片描述
实例4:

grep -n '[[:upper:]]o' blankspace.txt

在这里插入图片描述
实例5:

grep -n '[[:xdigit:]]b' blankspace.txt

在这里插入图片描述

扩展正则表达式(ERE)

使用方法:

grep -E
egrep

量词匹配:
+

egrep -n 'lo+' blankspace.txt

在这里插入图片描述
?

egrep -n 'an(n)?' blankspace.txt 

在这里插入图片描述

{n}

egrep -n 'o{2}' blankspace.txt

在这里插入图片描述
{n,m}

egrep -n 'o{1,3}' blankspace.txt

在这里插入图片描述
逻辑与分组匹配
|

egrep -n 'ss|oo' blankspace.txt

在这里插入图片描述
()

egrep -n 'Lo(ve|ok)' blankspace.txt

在这里插入图片描述

sed匹配字符

sed命令格式:

sed [参数] ... [执行命令] [输入文件]...

参数:

  • -n:安静模式,只打印受影响的行,默认打印输入数据的全部内容
  • -e:用于在脚本中添加多个执行命令一次执行,在命令行中执行多个命令通常不需要加该参数
  • -f filename:指定执行filename文件中的命令
  • -r:使用扩展正则表达式,默认为标准正则表达式
  • -i:将直接修改输入文件内容,而不是打印到标准输出设备

执行命令的格式:

[n1][,n2]command
[n1][~step]command
  • s:行内替换
  • c:整行替换
  • a:插入到指定行的后面
  • i: 插入到指定行的前面
  • p:打印指定行,通常与-n参数配合使用
  • d:删除指定行

实例1:
删除指定行:

nl blankspace.txt | sed '2,5d'

在这里插入图片描述
实例2:
添加字符串,a表示在行后面一行添加字符串,i表示在行前面一行添加字符串

nl blankspace.txt | sed '2a test'

在这里插入图片描述
实例3:
替换字符串

nl blankspace.txt | sed '2,5c blankspace'

在这里插入图片描述
实例4:
列出blankspace.txt内的第5到7行

nl blankspace.txt | sed -n '5,7p'

在这里插入图片描述

这篇关于Grep文本查找和sed文本编辑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1085080

相关文章

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

C++作用域和标识符查找规则详解

《C++作用域和标识符查找规则详解》在C++中,作用域(Scope)和标识符查找(IdentifierLookup)是理解代码行为的重要概念,本文将详细介绍这些规则,并通过实例来说明它们的工作原理,需... 目录作用域标识符查找规则1. 普通查找(Ordinary Lookup)2. 限定查找(Qualif

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

C#实现查找并删除PDF中的空白页面

《C#实现查找并删除PDF中的空白页面》PDF文件中的空白页并不少见,因为它们有可能是作者有意留下的,也有可能是在处理文档时不小心添加的,下面我们来看看如何使用Spire.PDFfor.NET通过C#... 目录安装 Spire.PDF for .NETC# 查找并删除 PDF 文档中的空白页C# 添加与删

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学

Java实现将Markdown转换为纯文本

《Java实现将Markdown转换为纯文本》这篇文章主要为大家详细介绍了两种在Java中实现Markdown转纯文本的主流方法,文中的示例代码讲解详细,大家可以根据需求选择适合的方案... 目录方法一:使用正则表达式(轻量级方案)方法二:使用 Flexmark-Java 库(专业方案)1. 添加依赖(Ma