Bash 如何修复错误agrep:模式太长(大于32个字符),它不';如果字符串中没有句号,是否显示错误?

Bash 如何修复错误agrep:模式太长(大于32个字符),它不';如果字符串中没有句号,是否显示错误?,bash,agrep,Bash,Agrep,当模式字符串中有一个句号(.)时,agrep会给出错误agrep:pattern太长(超过32个字符),否则不会 我想比较(大约)两个字符串,所以我使用了agrep,但是它给出了一个错误agrep:pattern太长(有>32个字符)。但我发现,如果模式字符串中没有句号,它不会给出错误(为什么?) 预期输出为1,但它给出了一个错误: agrep:图案太长(超过32个字符) 如果我删除了句号,它会起作用: $ echo "The quick brown fox jumped over the la

当模式字符串中有一个句号(.)时,agrep会给出错误
agrep:pattern太长(超过32个字符)
,否则不会

我想比较(大约)两个字符串,所以我使用了agrep,但是它给出了一个错误
agrep:pattern太长(有>32个字符)
。但我发现,如果模式字符串中没有句号,它不会给出错误(为什么?)

预期输出为1,但它给出了一个错误:
agrep:图案太长(超过32个字符)

如果我删除了句号,它会起作用:

$ echo "The quick brown fox jumped over the lazy dog." | agrep -c -4 "The quick brown fox jumped over the lazy dog"  
1

使用两个字符串进行近似字符串匹配/模糊字符串搜索

使用
agrep
bash

if agrep -1 "abc" <<< "xbc" >/dev/null; then echo "match"; else echo "no match"; fi
if tre-agrep -q -1 "abc" <<< "xbc"; then echo "match"; else echo "no match"; fi
两种情况下的输出:

match 比赛
问题是,
agrep
视为元字符。为避免此情况,您必须传递选项
-k

echo "The quick brown fox jumped over the lazy dog." | agrep -c -4 -k "The quick brown fox jumped over the lazy dog."
agrep上的手册页上说:

-k图案中的任何符号都不会被视为元字符


man agrep
:可以通过修改agrep.h@Cyrus中的参数Max_record来更改记录长度的限制。如果模式字符串中没有句号,则它会工作,不管字符串有多大。也许你想看看
tre-agrep
@Cyrus你能告诉我如何在字符串而不是整个文件上使用tre-agrep吗。我试着呼应“敏捷的棕色狐狸跳过了那只懒狗。”| tre agrep-4“敏捷的棕色狐狸跳过了那只懒狗”但它只是呼应了那根弦你是说?
echo“敏捷的棕色狐狸跳过了那只懒狗。”| tre agrep-c-4“敏捷的棕色狐狸跳过了那只懒狗。“
如果tre agrep-q-1“abc”
abc
的子字符串
xbcdefadf
有一个错误,为什么会显示与
匹配。匹配从位置0开始,在3个字符后结束。请参阅:
tre agrep-1--show position“abc”是否有一种方法可以比较两个字符串,以便在整个字符串中查找最大错误数。我不想在文件中搜索字符串,但检查字符串(行)是否与操作数字符串近似匹配(例如,如果它只是一个打字错误或完全不同的行),即“不应匹配”快速棕色狐狸跳过了懒狗“整个句子应近似sameI建议开始一个新问题,因为这超出了范围。agrep-x:“模式必须匹配整行”符合我的要求,但仍然显示错误模式太长(大于32个字符)。您能告诉我如何使用agrep.h更改图案长度的限制吗?我找到了/usr/bin/agrep文件,但不知道要更改什么。
echo "The quick brown fox jumped over the lazy dog." | agrep -c -4 -k "The quick brown fox jumped over the lazy dog."