agrep
agrep是grep实用程序的一个版本,它也与近似模式匹配。
查看英文版
1 agrep 运行系统环境
2 agrep 描述
3 agrep 语法
4 agrep 选项
5 agrep 模式
6 agrep 示例
agrep 运行系统环境
Unix&Linux
agrep 描述
agrep在输入文件名(默认输入为标准)中搜索包含与模式完全匹配或近似匹配的字符串的记录。
一条记录默认情况下是一行,但是可以使用-d选项(见下文)对它进行不同的定义。通常,将找到的每个记录复制到标准输出。近似匹配允许查找包含模式的记录,该记录带有多个错误,包括替换,插入和删除。
例如,“ Massechusets”将“ Massachusetts”与两个错误(一次替换和一次插入)匹配。运行agrep -2 Massechusets foo将输出文件foo中的所有行,其中包含“ Massechusets”中最多有2个错误的任何字符串。
agrep支持多种查询,包括任意通配符,模式集,以及通常所有的正则表达式。它支持grep家族支持的大多数选项以及更多选项(但与grep并非100%兼容)。
与其他grep家族一样,字符 $,^,*,[,],^和| ,(,),!和\包含在模式中时可能会导致意外结果,因为这些特殊字符对shell也是有意义的。为避免这些问题,应始终将整个pattern参数用单引号引起来,即'pattern'。请勿使用双引号(“)。
当agrep应用于多个输入文件时,文件名将显示在与模式匹配的每一行的开头。(处理单个文件时不显示文件名,但在这种情况下,如果用户希望显示文件名,则应使用/ dev / null作为列表中的第二个文件,然后将显示文件名。 )。
查看英文版
agrep 语法
agrep [ -#cdehiklnpstvwxBDGIS ] pattern [ -f patternfile ] [ filename... ]
查看英文版
agrep 选项
-# |
#是一个非负整数(最多8个),指定查找近似匹配项时允许的最大错误数。 默认为零。 通常,每次插入,删除或替换都算作一个错误。 可以调整插入,删除和替换的相对成本;请参阅 -I -D和 -S选项。 |
-c |
仅显示匹配记录的计数(出现次数)。 |
-d 'delim' |
将delim定义为两个记录之间的分隔符。默认值是' $ ',它与行尾匹配。 因此,默认情况下,一条记录是一行。 该DELIM可高达八个字符(可能使用的字符串^和$)。 在两个delim之间,在第一个delim之前和在最后一个delim之后的文本被视为一个记录。 例如,-d'$$'将段落定义为记录(如果一个段落由两个换行符表示),而-d'^ From'将邮件消息定义为记录。 阿格列普分别匹配每个记录。 此选项适用于正则表达式,但delim本身不能是正则表达式。 |
-e pattern |
与提供简单的模式参数相同,但是在模式以“ - ” 开头时,使用-e很有用。 |
-f patternfile |
匹配patternfile中的模式。输出是与patternfile中的至少一种模式匹配的所有行。 当前,-f选项仅适用于完全匹配和简单模式(任何元符号都被解释为常规字符)。 它仅与-c,-h,-i,-l,-s,-v,-w和-x选项兼容。 |
-h |
不显示文件名。 |
-i |
不区分大小写的搜索;例如,“ A ”和“ a ”被认为是等效的。 |
-k |
使用简单的模式匹配,即,模式中不将任何符号视为元字符。 例如,AGREP -k '一个(B | C)* d'富会发现文字串的出现|中的“(B c)中* d” FOO, 而AGREP '一个(B | C)* d' foo将在foo中找到与正则表达式'a(b | c)* d'匹配的子字符串。 |
-l |
仅列出包含匹配项的文件的名称。例如,AGREP -l“精彩” *将列出当前这些文件的名称目录包含单词精彩。 |
-n |
打印的每一行都在文件中带有其记录号作为前缀。 |
-p |
在文本中查找包含模式超级顺序的记录。例如,agrep -p DCS foo将与“ 计算机科学系 ” 匹配。 |
-s |
默默地工作;也就是说,除了错误消息外,什么也不显示。 |
-t |
从delim的末尾开始输出记录(并包括下一个delim)。这对于记录应在末尾出现delim的情况很有用。 |
-v |
反向模式-仅显示不包含模式的记录。 |
-w |
仅以单词搜索模式-即,如果模式被非字母数字字符(例如空格或破折号)包围,则仅匹配模式。 非字母数字必须包含在匹配项中;它们不能算作错误。 例如,agrep -w -1汽车将匹配“ 汽车 ”,但不匹配“ 字符 ”。 |
-x |
模式必须与整行匹配。 |
-y |
与-B选项一起使用。当-y是,AGREP将一直输出没有给出提示的最佳匹配。 |
-B |
最佳匹配模式。 当指定-B且未找到完全匹配时,agrep将继续搜索,直到找到最接近的匹配(即错误次数最少的匹配)为止, 此时将显示以下消息:“ 最佳匹配包含x错误,有y个匹配项,将其输出?(y / n) “。 标准输入(例如管道输入)不支持最佳匹配模式。 指定- #,- c或-l选项时,-B选项将被忽略。通常,-B可能比-#慢,但幅度不大。 |
-Dk |
将删除成本设置为k(k是一个正整数)。该选项当前不适用于正则表达式。 |
-G |
输出包含匹配项的文件。 |
-Ik |
将插入成本设置为k(k为正整数)。该选项当前不适用于正则表达式。 |
-Sk |
将替换成本设置为k(k为正整数)。该选项当前不适用于正则表达式。 |
查看英文版
agrep 模式
agrep支持多种模式,包括简单的字符串,带有字符类的字符串,字符串集,通配符和正则表达式。
String
一个字符串是字符,包括特殊符号的任意序列^线路的起点和$为行尾。上面列出的特殊字符($,^,*,[,^,|,(,),!,和\),应通过前面\如果他们是要匹配的常规字符。例如,\ ^ abc \\对应于字符串“ ^ abc \”,而^ abc对应于行首的字符串“ abc”。
角色类
甲类字符是内部“字符列表[] ”(按顺序)对应于从列表中,其中短划线表示两个字符之间的范围中的任何字符。例如,[a-ho-z]是a和h之间或o和z之间的任何字符。符号^内[]表示的字符不匹配(“补”的列表)。例如,[^ in]表示字符i到n以外的任何字符。因此,符号^具有两个含义,但这与egrep一致。符号。 代表换行符以外的任何字符。
布尔运算
agrep支持AND 操作 ' ; '和OR操作' , ',但不能同时使用两者。例如,fast; network搜索包含“ fast”和“ network”的所有记录。
通配符
符号“ # ”用于表示通配符。#匹配零个或任意数量的任意字符。例如,ex#e匹配“ example”。符号#等价于egrep中的。*。实际上,。*也是有效的,因为它是一个有效的正则表达式,但是除非它是实际正则表达式的一部分,否则#会更快地工作。
精确匹配和近似匹配的组合
即使匹配出现错误,尖括号<>中的任何模式也必须与文本完全匹配。例如,集成电路匹配数学有一个错误(将最后小号有一个),但MATHE不匹配的数学不管我们有多少误差允许。
常用表达
agrep中的正则表达式语法通常与egrep相同。联合行动' | ',Kleene闭包' * '和括号()均受支持。目前不支持' + '。正则表达式当前限制为大约30个字符(不包括元字符)。某些选项(-d,-w,-f,-t,-x,-D,-I,-S)当前不适用于正则表达式。使用' *的正则表达式的最大错误数'或' | '是4。
查看英文版
agrep 示例
agrep -2 -c ABCDEFG foo
给出文件foo中两个错误中包含“ ABCDEFG ” 的行数。
agrep -1 -D2 -S2'ABCD#YZ'foo
输出包含“ ABCD ” 的行,在任意距离之内输出“ YZ ”,最多可以再插入一个(-D2和-S2会使删除和替换太“昂贵”)。
agrep -5 -p abcdefghij / path / to / dictionary / words
输出字典中位于/ path / to / dictionary / words的字典中所有单词的列表,这些单词顺序至少包含字母表的前10个字母中的5个。
agrep -1'abc [0-9](de | fg)* [xz]'foo
输出包含以下内容的行,最多包含一个错误,该字符串以“ abc ”开头,后跟一位数字,后跟零个或多个重复的“ de ”或“ fg ”,然后是“ x ”,“ y ”或“ z ”。
agrep -d'^ From''breakdown; internet'mbox
输出包含关键字“ 细分 ”和“ Internet ”的所有邮件(模式“ ^ From ”将邮件文件中的邮件分开)。
agrep -d'$$'-1''foo
查找包含word1后跟word2的所有段落,其中一个错误代替空白。特别是,如果word1是一行中的最后一个单词,而word2是下一行中的第一个单词,则该空格将由换行符替换,并且将匹配。因此,这是一种克服换行符分隔的方法。请注意,-d'$$'(或另一行跨越多行的delim)是必需的,因为否则agrep一次只能搜索一行。
查看英文版