grep、sed、awk概述
grep 更适合单纯的查找或匹配文本。grep基本是以行为单位处理文本的; grep功能简单,就是一个简单的正则表达式的匹配。 grep可以理解为主要作用是在一个文件中查找过滤需要的内容。
sed 更适合编辑匹配到的文本。Sed是一个非交互性文本流编辑器。它编辑文件或标准输入导出的文本拷贝。sed编辑器按照一次处理一行的方式来处理文件(或者输入)并把输出送到屏幕上。sed把当前正在处理的行保存在一个临时缓存里,这个缓存叫做模式空间。一但sed完成了对模式空间里的行的处理(即对该行执行sed命令),就把模式空间的行送到屏幕上(除非该命令要删除该行活禁止打印)。处理完该行之后,从模式空间里删除它,然后把下一行读入模式空间,进行处理,并显示。当输入文件的最后一行处理完后,sed终止。通过把每一行存在一个临时缓存里并编辑该行,初始文件不会被修改或被破坏。
awk 更适合格式化文本,对文本进行较复杂格式处理。awk可以通过指定分隔符将一行(一条记录)划分为多个字段,以字段为单位处理文本。awk中支持C语法,可以有分支条件判断、循环语句等,相当于一个小型编程语言。awk不是过滤查找,而是文本处理工具,是把一个文件处理成你想要的格式。awk是一种样式扫描与处理工具。它几乎可以完成grep和sed所能完成的全部工作,同时,它还可以可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。如果你要处理与文本样式扫描相关的工作,awk应该是你的第一选择。
正则表达式基础
元字符
含义
举例
.
匹配任何单个字符
r.t可匹配:rat、rut、r t,但不匹配root
*
匹配0或多个在它前面的一个字符
.*能够匹配任意数量的任何字符
^
匹配一行的开始
^When能够匹配”When in the course”的开始,但是不能匹配”What and When in the”
$
匹配行结束符
weasel$ 能够匹配”He’s a weasel”的末尾,但不能匹配”They are a bunch of weasels.”
\
转义符,用来将元字符当作普通的字符来进行匹配
\$被用来匹配美元符号,而不是行尾,\.用来匹配点字符,而不是任何字符的通配符
[ ]
[n-m]
[^n-m]
匹配括号中的任何一个字符,可使用-来指定区间,在左括号和第一个字符之间使用^字符表示排除
r[aou]t匹配rat、rot、rut,但不匹配ret。[0-9]可以匹配任何数字字符,还可以指定定多个区间,如[A-Za-z]可以匹配任何大小写字母。[^269A-Z]匹配除了2、6、9和所有大写字母之外的任何字符
\< \>
匹配单词(word)的开始(\)
\
\(\)
将\(和\)之间的表达式定义为“组”,并将匹配结果保存到一个临时区域(最多9个),可以用\1到\9来引用
暂无
|
将两个匹配条件进行逻辑“或”运算
(him|her) 匹配”him and i”和”her and i”,但不能匹配”them.”
+
匹配1或多个在它前面的一个字符
9+匹配9、99、999等
?
匹配0或1个正好在它之前的那个字符
暂无
\{i\}
\{i,j\}
匹配指定数目的字符,这些字符是在它之前的表达式定义的
A[0-9]\{3\}能够匹配A123、A348等,但不能匹配A1234。而正则表达式[0-9]\{4,6\}匹配连续的任意4个、5个或者6个数字字符
正则表达式支持对比
命令或环境
.
[ ]
^
$
\(\)
\{ \}
?
+
|
( )
vi
●
●
●
●
●
awk
●
●
●
●
●
●
●
●
sed
●
●
●
●
●
●
grep
●
●
●
●
●
●
egrep
●
●
●
●
●
●
●
●
●
fgrep
●
●
●
●
●