grepを使用してファイル内の特定の行を一覧表示する

grepを使用してファイル内の特定の行を一覧表示する

たとえば、任意のファイルを使用して /usr/share/vim/vim74/tutor/tutor5文字の単語で始まるすべての行を一覧表示する方法はありますか? 5文字の単語で終わる行はどうですか?これについてしばらく悩んできましたが、まだ進展がありません。誰もが解決策を知っていますか? (これが可能かどうかはわかりません。事故実験だけです。)

答え1

grep -E '(^[[:alpha:]]{5}[^[:alpha:]]|[^[:alpha:]][[:alpha:]]{5}$)' /usr/share/vim/vim74/tutor/tutor

grep -Eegrepを使う

'(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'

関連情報