web-dev-qa-db-ja.com

両側にコロンがある任意の長さの英数字文字列のgrep

1から50文字の英数字の文字列(理想的には、任意の長さでも機能します)の両側にコロンを付けてgrepします。通常の結果は、文字列:shopping:を含むすべての行です。これまでのところ、動作しない以下のコードを取得しています(いくつかのバリエーションを試しました)。

grep ':[[:alnum:]]{1,100}:' ~/x.txt
14
user36719

これには、拡張正規表現を有効にする必要があります。

grep -E ':[[:alnum:]]+:' ~/x.txt
13
Joseph R.

基本的な正規表現を使用すると、次のように記述できます。

grep ':[[:alnum:]]\{1,100\}:' ~/x.txt

\{(たとえば、\+または\?とは対照的に)は標準で移植可能であり、実際には+および?のBRE相当物が通常書き込まれます。 \{\{1,\}および\{0,1\}grep -Eも標準的で移植性があるため、このような場合に読みやすい正規表現を作成するために使用することもできます。

4

拡張正規表現を使用していますが、-Eオプションを使用する必要がありますか?

grep -E ':[[:alnum:]]{1,100}:' ~/x.txt
1
Msegade

誰もそれについて言及していないので、egrepも使用できます。これは、私が理解しているように、grep -Eと同等です。

egrep ':[[:alnum:]]{1,100}:' ~/x.txt
0
sherrellbc