\>
锚定单词的结束,如'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结尾的单词的行
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可以为:
变量或数组赋值
输出
函数操作
控制流命令