grepで改行のパターンを与える方法は?最初に新しい行、最後に新しい行。正規表現の方法ではありません。\nのようなもの。
質問する
201912 次
6 に答える
102
pcregrep
通常の代わりに試してくださいgrep
:
pcregrep -M "pattern1.*\n.*pattern2" filename
この-M
オプションを使用すると、複数の行にまたがって一致するため、改行をとして検索できます\n
。
于 2012-10-01T17:46:57.000 に答える
95
grep
パターンは個々の行と照合されるため、入力で見つかった改行とパターンを照合する方法はありません。
ただし、次のような空の行を見つけることができます。
grep '^$' file
grep '^[[:space:]]*$' file # include white spaces
于 2012-09-29T12:23:53.050 に答える
28
@jarnoのおかげで、-zオプションについて知っており、GNU grepを-Pオプションとともに使用すると、照合\n
が可能であることがわかりました。:)
例:
grep -zoP 'foo\n\K.*'<<<$'foo\nbar'
プリントbar
于 2018-03-09T11:10:50.590 に答える
24
あなたはこのように使うことができます...
grep -P '^\s$' file
-P
Perl正規表現(POSIXの拡張grep
)に使用されます。\s
空白文字と一致します。が後に続く場合は*
、空の行にも一致します。^
行の先頭に一致します。$
行の終わりに一致します。
于 2012-09-29T12:30:32.097 に答える
6
回避策(非ポータブルを使用しない-P
)については、改行文字を一時的に別の文字に置き換えて、元に戻すことができます。例:
grep -o "_foo_" <(paste -sd_ file) | tr -d '_'
_foo_
基本的に、は(so = )_
を意味する完全一致を探しています。とにかく各パターンが新しい行に印刷されるので、それを元に戻す必要はありません。したがって、削除するだけで十分です。\n
__
\n\n
tr '_' '\n'
_
于 2015-10-18T12:04:28.923 に答える
4
于 2018-12-29T10:21:21.850 に答える