Agrep
在 agrep 中指定字長?
我
agrep
用來查找相似的拼寫詞,例如:agrep -1 hack /usr/share/dict/words
但是它返回的單詞太多,所以我也希望單詞的長度與關鍵字相同。我該如何指定?
使用 1 個 agrep
使用的關鍵
agrep
是要認識到您可以控制添加、替換和刪除字元等操作的成本。對於插入,它是-I
開關。對於刪除它是-D
.$ agrep -1 -I2 -D2 '^hack$' /usr/share/dict/words
例子
$ agrep -1 -I2 -D2 '^hack$' /usr/share/dict/words back cack fack haak hack haik hank hark hask hawk heck hick hock huck Jack jack lack Mack mack Pack pack rack sack tack Wack wack yack Zack zack
細節
因此,如果我們將插入成本設置為 1 高於我們願意容忍的錯誤數量,並且對刪除成本做同樣的事情,我們將永遠不會插入或刪除任何字元,從而保持我們的長度,即我們匹配的模式的長度
hack
,即 4。因此,在上述命令中,我們將誤差範圍設置為 1 (
-1
)。我們已將執行和插入或刪除的成本設置為 2 (-I2 -D2
)。我們已經保護了我們的結果,以便它們只匹配以我們的模式 (^hack$
) 開頭和結尾的整個單詞的字元串。**注意:**插入符號 (
^
) 表示字元串的開頭,美元符號 ($
) 表示結尾。這些被稱為錨。使用 2 個 agrep
作為替代方案,您也可以使用 2 個 agrep。
$ agrep '^[a-zA-Z]{4}$' /usr/share/dict/words | agrep -1 'hack'
例子
$ agrep '^[a-zA-Z]{4}$' /usr/share/dict/words | agrep -1 'hack' back cack Chac Chak dhak fack haak hack haik hake hako haku hank hark hask hawk heck hick hock huck Jack jack lack Mack mack Pack pack rack sack Shak tack thak Wack wack yack Zack zack
細節
第一個
agrep
任務是查找長度為 4 個字元的字元串集。第二個agrep
將該集合進一步減少為僅與您的模式匹配的字元串,hack
並允許單個錯誤。