これはコマンドです:
grep '\(2\)[[:digit:]]\{\1\}' numbers
私が望むのは、数字「2」の後に正確に2桁の数字を一致させることです。式で数字「2」を「3」に変更すると3桁の数字と一致し、そうであれば...それから4桁の数字と一致します。
ここでは逆参照を使用していますが、このコマンドを実行すると次の出力が表示されます。
grep: invalid content of \{\}
私の表情はどのように変更できますか?
最初の回避策: Sergeが答えたように:
2[[:digit:]]\{1\}\|3[[:digit:]]\{2\}\|4[[:digit:]]\{3\}\|5[[:digit:]]\{4\}
これは実際には機能しますが、最初のサブ式があると\(34\)
仮定すると、その数字を逆参照して34(またはそれ以上)のケースを実装する必要はありません。
答え1
ここでは逆参照は許可されていません。考えられるすべての状況を説明する式を作成する必要があります。たとえば、次のようになります。
2[[:digit:]]\{1\}\|3[[:digit:]]\{2\}\|4[[:digit:]]\{3\}\|5[[:digit:]]\{4\}
答え2
行の実際の最初の番号に基づいて決定するのではなく、最初の値をハードコーディングしたいようです。次のことを検討してください。
HOWMUCH=2 grep "\($HOWMUCH\)[[:digit:]]\{$HOWMUCH\}" numbers