本文主要是介绍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文本编辑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!