コマンドライン(Bash)で、テキスト、リストなどのすべての二重文字を検索する正規表現を探しています。
主な問題:同じ文字がn回出てくるものを見つけるために正規表現を定義するなどaa
のll
シーケンスを簡単に見つける方法はありますか?ttttt
私が探しているのは、非常に基本的なレベルでこれを達成することです。コマンドラインから。 Linuxシェルから。
かなりの研究の終わりに、私は次の答えとそれから発生する質問を思い出しました。だから彼らは解決策がどこにあるかについてのヒントを提供するだけです。しかし:
a) (e) grep とバックスラッシュの問題
grep 'a\{2\}'
探すaa
egrep'a{2}'
探すaa
質問:間隔を設定する必要性は、実際に私が使用するコマンドに関連していますか?それでは、ここで(e)grepを使用するときに考慮すべきことが何であるかを教えることができる人はいますか?
b)私は見つけたこの回答はここにあります私の問題の場合、これはまさに私が望むものではありませんが、
grep -E '(.)\1' filename
同じ文字が複数回表示される項目を探します。どんなに頻繁に。これは私が探しているものと似ていますが、まだいくつかの繰り返しを設定したいと思います。
おそらくこれを2つ以上の質問に分ける必要があるようですが、ここではこの素晴らしいサイトを圧倒したくありません。
PS:もう一つの質問です。トピックと異なる場合がありますが、はいin
、inside
まだそうです。そしてそれは正しいですか?at
on the shell
on the command line
ベストアンサー1
これは実際には2つの質問なので、別々に答える必要があります。しかし、答えは比較的簡単なので、ここに置きます。この回答はGNUに固有のものですgrep
。
A)egrep
と同じですgrep -E
。どちらもデフォルトのgrep
正規表現の代わりに「拡張正規表現」を使用する必要があることを示します。grep
一般正規表現にはバックスラッシュが必要です。
man
ページから:
基本正規表現と拡張正規表現
基本正規表現では、メタ文字?、+、{、|、(と)特別な意味を失います。代わりにバックスラッシュバージョンを使用してください。\?、\+、\{、\|、\(と\)。
man
歴史的なルールと移植性の詳細については、そのページを参照してください。
b) 変更したい文字数から1を引いた値を使用して置き換えますegrep '(.)\1{N}'
(ドットは最初の文字と一致するため).N
したがって、4回繰り返される文字を一致させるには、を使用しますegrep '(.)\1{3}'
。