Command-Line
grep - 將在字元串中準確找到 3 個 a 的正則表達式
我想更改以下命令,以便正則表達式匹配 /usr/share/dict/words 中恰好包含3 個 a 而不是至少3 個 a 的單詞。
cat /usr/share/dict/words | grep "a.*a.*a" | grep -v "'s$" | wc -l
我該怎麼做呢?
這是
[^a]
(匹配除 之外的任何字元a
)而不是.
(匹配任何字元)的一種方法:$ grep -E '^([^a]*a){3}[^a]*$' /usr/share/dict/cracklib-small | shuf -n 4 areaway humanitarian capitalizations autonavigator
您也可以編寫
^[^a]*(a[^a]*){3}$
具有相同結果的正則表達式。當你想要不同數量的 a 時,它也相當於
^[^a]*a[^a]*a[^a]*a[^a]*$
which 不縮放。雖然性能要好得多,但這並不重要,除非您正在瀏覽千兆字節的數據。除了顯式使用
^
和正則$
表達式錨操作符,您還可以使用-x
隱式執行此操作的選項。另請參閱-i
不區分大小寫匹配的選項(根據語言環境):grep -xiE '([^a]*a){3}[^a]*'