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'

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值