Linux 正则表达式 vi, grep, sed, awk
1. vi
表示内容的元字符
|
模式 |
含义 |
|
. |
匹配任意字符 |
|
[abc] |
匹配方括号中的任意一个字符。可以使用-表示字符范围,如[a-z0-9]匹配小写字母和阿拉伯数字。 |
|
[^abc] |
在方括号内开头使用^符号,表示匹配除方括号中字符之外的任意字符。 |
|
\d |
匹配阿拉伯数字,等同于[0-9]。 |
|
\D |
匹配阿拉伯数字之外的任意字符,等同于[^0-9]。 |
|
\x |
匹配十六进制数字,等同于[0-9A-Fa-f]。 |
|
\X |
匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f]。 |
|
\w |
匹配单词字母,等同于[0-9A-Za-z_]。 |
|
\W |
匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_]。 |
|
\t |
匹配<TAB>字符。 |
|
\s |
匹配空白字符,等同于[ \t]。 |
|
\S |
匹配非空白字符,等同于[^ \t]。 |
|
\a |
所有的字母字符. 等同于[a-zA-Z] |
|
\l |
小写字母 [a-z] |
|
\L |
非小写字母 [^a-z] |
|
\u |
大写字母 [A-Z] |
|
\U |
非大写字母 [^A-Z] |
表示数量的元字符
|
模式 |
含义 |
|
* |
匹配0-任意个 |
|
\+ |
匹配1-任意个 |
|
\? |
匹配0-1个 |
|
\{n,m} |
匹配n-m个 |
|
\{n} |
匹配n个 |
|
\{n,} |
匹配n-任意个 |
|
\{,m} |
匹配0-m个 |
|
\_. |
匹配包含换行在内的所有字符 |
|
\{-} |
表示前一个字符可出现零次或多次,但在整个正则表达式可以匹配成功的前提下,匹配的字符数越少越好 |
|
\= |
匹配一个可有可无的项 |
|
\_s |
匹配空格或断行 |
表示转义和位置的元字符
| 模式 | 含义 | 模式 | 含义 |
| \* | 匹配 * 字符 | $ | 匹配行尾 |
| \. | 匹配 . 字符 | ^ | 匹配行首 |
| \/ | 匹配 / 字符 | \< | 匹配单词词首 |
| \\ | 匹配 \ 字符 | \> | 匹配单词词尾 |
| \[ | 匹配 [ 字符 |
替换变量
在正规表达式中使用 \( 和 \) 符号括起正规表达式,即可在后面使用\1、\2等变量来访问 \( 和 \) 中的内容。
懒惰模式
\{-n,m} 与\{n,m}一样,尽可能少次数地重复
\{-} 匹配它前面的项一次或0次, 尽可能地少
2. grep (global regular expression and print the line)
^
锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$
锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
.
匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
*
匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。
[]
匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^]
匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-F和H-Z的一个字母开头,紧跟rep的行。
\(..\)
标记匹配字符,如'\(love\)',love被标记为1。
\<
锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
\>
锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
x\{m\}
重复字符x,m次,如:'o\{5\}'匹配包含5个o的行。
x\{m,\}
重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
x\{m,n\}
重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
\w
匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\W
\w的反置形式,匹配一个或多个非单词字符,如点号句号等。
\b
单词锁定符,如: '\bgrep\b'只匹配grep。
egrep 支持 +, ?, | 等
3. sed - stream editor for filtering and transforming text
sed每次处理一行内容。处理时先把当前要处理的行存储在临时缓冲区,(称为“模式空间”,pattern space),用sed命令处理完成后(命令hHgGx用于处理hold space,跟模式空间一起完成处理),把缓冲区的内容送往output(即屏幕)。然后处理下一行,依次重复到文件末尾。sed不改变文件的内容变,但可以将结果重定向。
sed定址:
可以直接通过指定行数或者模式或者二者的组合选定要进行编辑的行, 如果不指定则处理所有的行。
sed '2,5d' file # 删除第2~5行
sed-n'3p' file # 只打印第三行 -n表示不打印匹配的行
sed'/My/,/You/d' file # 删除my~You之间的行
| 命令 | 功能 |
| a\ |
在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用“\”续行 |
| c\ | 用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每行末尾需用"\"续行 |
| i\ | 在当前行之前插入文本。多行时除最后一行外,每行末尾需用"\"续行 |
| d | 删除行 |
| h | 把模式空间里的内容复制到暂存缓冲区 |
| H | 把模式空间里的内容追加到暂存缓冲区 |
| g | 把暂存缓冲区里的内容复制到模式空间,覆盖原有的内容 |
| G | 把暂存缓冲区的内容追加到模式空间里,追加在原有内容的后面 |
| l | 列出非打印字符 |
| p | 打印行(模式空间) |
| n | 读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理 |
| r | 从文件中读取输入行 |
| ! | 对所选行以外的所有行应用命令 |
| s | 用一个字符串替换另一个 |
| g | 在行内进行全局替换 |
| w | 将所选的行写入文件 |
| x | 交换暂存缓冲区与模式空间的内容 |
| y | 将字符替换为另一字符(不能对正则表达式使用y命令) |
| 元字符 | 功能 | 示例 |
| ^ | 行首定位符 | /^my/ 匹配所有以my开头的行 |
| $ | 行尾定位符 | /my$/ 匹配所有以my结尾的行 |
| . | 匹配除换行符以外的单个字符 | /m..y/ 匹配包含字母m,后跟两个任意字符,再跟字母y的行 |
| * | 匹配零个或多个前导字符 | /my*/ 匹配包含字母m,后跟零个或多个y字母的行 |
| [] | 匹配指定字符组内的任一字符 | /[Mm]y/ 匹配包含My或my的行 |
| [^] | 匹配不在指定字符组内的任一字符 | /[^Mm]y/ 匹配包含y,但y之前的那个字符不是M或m的行 |
| \(..\) | 保存已匹配的字符 | 1,20s/\(you\)self/\1r/ 标记元字符之间的模式,并将其保存为标签1,之后可以使用\1来引用它。最多可以定义9个标签,从左边开始编号,最左边的是第一个。此例中,对第1到第20行进行处理,you被保存为标签1,如果发现youself,则替换为your。 |
| & | 保存查找串以便在替换串中引用 | s/my/**&**/ 符号&代表查找串。my将被替换为**my** |
| \< | 词首定位符 | /\<my/ 匹配包含以my开头的单词的行 |
| \> | 词尾定位符 | /my\>/ 匹配包含以my结尾的单词的行 |
| x\{m\} | 连续m个x | /9\{5\}/ 匹配包含连续5个9的行 |
| x\{m,\} | 至少m个x | /9\{5,\}/ 匹配包含至少连续5个9的行 |
| x\{m,n\} | 至少m个,但不超过n个x | /9\{5,7\}/ 匹配包含连续5到7个9的行 |
sed 不管是否找到指定的模式,退出状态都是0。只有当命令存在语法错误时,sed的退出状态才不是0。
4. awk - pattern scanning and processing language
awk 命令逐行扫描文件,寻找匹配特定模式的行,并在这些行上进行操作。命令语法:
awk -F域分隔符 'command' file
或
awk -f script-file file
command 由pattern + {action}组成,两者均为可选。如果没有指定模式,则应用到所有行;如果没有指定动作,则打印到标准输出 (屏幕)。
模式可以为:
/正则表达式/
关系表达式
模式匹配表达式: ~ 和 ~!
行的范围
BEGIN
END
action可以为:
变量或数组赋值
输出
函数操作
控制流命令
Linux 正则表达式 vi, grep, sed, awk的更多相关文章
- [svc]linux正则实战(grep/sed/awk)
企业实战: 过滤ip 过滤出第二行的 192.168.2.11. eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ine ...
- linux 三大利器 grep sed awk 正则表达式
正则表达式目标 正则表达式单字符: 特定字符 范围字符:单个字符[ ] :代表查找单个字符,括号内为字符范围 数字字符:[0-9],[259] 查找 0~9 和 2.5 .9 中的任意一个字符 小写字 ...
- linux 三剑客命令(grep,sed ,awk)
grep 命令 :强大的文本’搜索’工具 1.grep -n 'word' file_name 在file_name文件中找到word所在的所有行并显示.-n 为显示行号. 2 ...
- linux 三大利器 grep sed awk sed
sed主要内容和原理介绍 sed 流处理编辑器 sed一次处理一行内容,读入一行处理一行 sed不改变文件内容(除非重定向) sed 命令行格式 $ sed [options] 'command' f ...
- linux(5)--补充(管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)
本节中正则表达式的工具程序 grep,sed和awk是重点,也是难点!!! 先补充一下一. 管道| / 重定向> / xargs 如:1. 管道和重定向的区别:具体可以见 http://www. ...
- Linux三剑客grep/sed/awk
grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color ...
- linux三剑客grep|sed|awk实践
最好先学习正则表达式的基本用法,以及正则表达式BREs,EREs,PREs的区别 此坑待填 grep sed awk
- [Linux]正则表达式和grep使用【转载】
[Linux]正则表达式和grep使用 2018年12月05日 23:45:54 祥知道 阅读数 78 标签: 正则表达式grepLinuxegrep 更多 个人分类: Linux 所属专栏: Li ...
- 【Linux】 字符串和文本处理工具 grep & sed & awk
Linux字符串&文本处理工具 因为用linux的时候主要用到的还是字符交互界面,所以对字符串的处理变得十分重要.这篇介绍三个常用的字符串处理工具,包括grep,sed和awk ■ grep ...
随机推荐
- OgnlValueStack 源码
/* * Copyright 2002-2006,2009 The Apache Software Foundation. * * Licensed under the Apache License, ...
- C#控制台程序读取项目中文件路径
//使用appdomain获取当前应用程序集的执行目录 string dir = AppDomain.CurrentDomain.BaseDirectory; //使用path获取当前应用程序集的执行 ...
- hashcode和equals方法
转自https://www.cnblogs.com/keyi/p/7119825.html 一.equals方法的作用 1.默认情况(没有覆盖equals方法)下equals方法都是调用Object类 ...
- 洛谷P1908 逆序对
P1908 逆序对 2.2K通过 4.4K提交 题目提供者该用户不存在 标签云端 难度普及/提高- 时空限制1s / 128MB 提交 讨论 题解 最新讨论更多讨论 归并排序党注意了!数组要开… ...
- PowerDesigner常用快捷键
一般快捷键 F4 打开检查模型窗口,检查模型 F5 如果图窗口内的图改变过大小,恢复为原有大小即正常大小 F6 放大图窗口内的图 F7 缩小图窗口内的图 F8 在图窗口内中查看全部 ...
- 8个学习.net的博客链接 (以前收藏过更多的,被百度新版搞没了,恨死了)
原文发布时间为:2012-09-18 -- 来源于本人的百度文章 [由搬家工具导入] Simone Chiaretta’s CodeClimber http://www.haacked.com/ ( ...
- WIN8.1安装 .net framework 3.5
1.虚拟光驱加载安装镜像 2.以管理员权限运行cmd 3.输入以下命令: dism.exe /online /enable-feature /featurename:NetFX3 /Source:X: ...
- hdu 1403 Longest Common Substring 后缀数组 模板题
题目链接 题意 问两个字符串的最长公共子串. 思路 加一个特殊字符然后拼接起来,求得后缀数组与\(height\)数组.扫描一遍即得答案,注意判断起始点是否分别在两个串内. Code #include ...
- C语言中的基础知识变量探讨
C语言中的变量是编程的基础,主要有四个要素:存储类型.存储大小.存储名称和存储地址. 一.变量的要素: 1.存储类型:主要表明名变量存储的特征,主要有auto.extern.static和regist ...
- shell中规则表达式与特殊符号
在 bash 的操作环境中还有一个非常有用的功能,那就是通配符 (wildcard) ! 我们利用 bash 处理数据就更方便了!底下我们列出一些常用的通配符喔: 符号 意义 * 代表『 0 个到无穷 ...