たとえば、任意のファイルを使用して /usr/share/vim/vim74/tutor/tutor
5文字の単語で始まるすべての行を一覧表示する方法はありますか? 5文字の単語で終わる行はどうですか?これについてしばらく悩んできましたが、まだ進展がありません。誰もが解決策を知っていますか? (これが可能かどうかはわかりません。事故実験だけです。)
答え1
grep -E '(^[[:alpha:]]{5}[^[:alpha:]]|[^[:alpha:]][[:alpha:]]{5}$)' /usr/share/vim/vim74/tutor/tutor
grep -E
egrepを使う
'(a|b)'
検索モードa
または模様b
^
行の始まり、$
行の終わりです。
[[:alpha:]]{5}
5つの連続した文字を表します。
[^[:alpha:]]
手紙という意味ですか?
したがって、私たちはegrepを使って次のものを見つけます。
- 行開始、5文字、その後は文字ではない。または
- 非文字、5文字、次の行末
答え2
それはあなたが意味するものによって異なります。一言、しかし良い
grep -E '^[[:alnum:]]{5}\b'
(五文字と数字文字の後に単語の境界が続き、行の先頭に固定されます)またはgrepバージョンがPerl互換正規表現(PCRE)をサポートしている場合
grep -P '^\w{5}\b'
(五単語文字行の先頭に固定された単語の境界が続きます。行末の場合はこれに対応します。
grep -E '\b[[:alnum:]]{5}$' file
または
grep -P '\b\w{5}$'
言及した特定のファイルの場合、ほとんどの行は先行スペースで始まります。これを無視するには、grep -E '^[[:space:]]*[[:alnum:]]{5}\b'
このようなタスクを実行するか、それに対応するPCREタスクを実行する必要がありますgrep -P '^\s*\w{5}\b'
。