最常用的正则查找指令,比如结合tail将匹配正则的文件行输出
tail 文件名 | grep -E "正则表达式" > "结果输出文件名"
sed适合用于对大文件进行正则替换输出 其处理是实时显示(从文件读取一行匹配一行,结果输出) 不会修改原文件(添加g标记为全部替换,不添加为每行替换首个匹配项)
sed 's/正则表达式/替换文本/g'
如果需要保存输出到文件可以类似上面使用重定向输出符
sed 's/正则表达式/替换文本/g' > "输出文件名"
find指令用于通过正则表达式检索某个文件名所在的完整路径
#查找当前目录及其所有子目录下,名称符合对应正则表达式的文件名
find . -name "正则表达式"
还可以结合xargs和grep对匹配的文件的内容进行正则检索 xargs会将文件内容处理为按行输入到缓冲区
find . -name "正则表达式" | xargs grep -E "文件内容正则"
awk是比较好用的指令,支持循环、正则和字典等 match函数接受的第一个参数为输入,第二个参数为正则,返回是否存在匹配 substr函数接受的第一个参数为输入,第二个参数为开始切割的下标,第三个参数为切割长度 index函数接受的第一个参数为输入,第二个参数为要查找的子串,返回从左往右找到的第一个子串的位置下标 awk中对于字典、变量不需要定义,第一次赋值即为定义 print函数进行打印输出,带双引号的字符串会作为多个打印的拼接符,并将引号中内容一并输出 对于比较长的awk指令,一般写到文件通过shell执行(命令行需要为单行,awk不需要严格缩进,由{}控制作用域范围) 以下为结合文件,按行读取作为输入,使用字典和字符串函数substr、index的示例
awk 'Begin{
while(getline < "输入文件名"{
if(match($0,/正则/)){
var = substr($0,index($0,"subtext"), iLen)
print var
dict[key] = var
}
}
close("输入文件名")
for (key in dict){
print key","dict[key]
}
}'