
ではless
、を使用して、キャリッジリターンと改行を含むパターンを検索できますか?パターンは、(から)/を使用して行で終了できることは知っています。$
less で検索に改行を含めるにはどうすればいいですか?) ですが、複数行にまたがるテキストに一致するパターンが必要です。
試してみました\n
が、文字のみを検索するだけですn
。
答え1
の検索関数は、改行で区切られた 1 行ずつ実行されるため、行の境界を越えて一致させることはできませんless
。これは、システムの正規表現の実装 (GNU、POSIX、PCRE など) に関係なく当てはまります。
メインライン開発の公式ソースリポジトリが見つからなかったことに注意してください。 less
ただし、ここでのコードレビューの目的上、以下のリンクは FreeBSD contrib ツリーからのものです。
見るsearch.c:検索範囲()検索操作の実装。その中のループは行.c:forw_raw_line()改行で区切られた次のコンテンツブロックを取得します。そのブロックはマッチ.c:マッチ_パターン()検索パターン(正規表現)が実行される場所。
複数の行にまたがって一致させるには、別のツールを使用する必要があります。 1 つのオプションは、他の人の提案に従ってエディターにドロップしてその検索機能を使用することです。v
を押すとエディターを起動できますless
。
答え2
でどのように行うかはわかりませんless
が、 でも同じことを実現できますvim
。
http://vim.wikia.com/wiki/Search_across_multiple_lines
/PATTERN1\\_.\\{-}PATTERN2
アトムは、\\_.
行末を含む任意の文字を検索します。マルチは、\\{-}
可能な限り少ない文字に一致します。
答え3
less
正規表現構文を使用しておりed
、残念ながら複数行の一致はサポートされていません。
私もそれを見つけたいと思っていましたが、少なくともこの構文ビットが次のように使用されているかどうかは知りたかったのですless
:
RE_DOT_NEWLINE このビットが設定されている場合、任意の文字に一致する演算子は改行に一致します。このビットが設定されていない場合、改行に一致しません。
つまり、パターンを使用して改行を一致させることができます.+
。しかし、そうではありません。