GNU sed
v4.2.2-7の場合、info sed
これは次のことを意味します。
'/REGEXP/M'
'\%REGEXP%M'
The 'M' modifier to regular-expression matching is a GNU 'sed'
extension which directs GNU 'sed' to match the regular expression
in 'multi-line' mode. The modifier causes '^' and '$' to match
respectively (in addition to the normal behavior) the empty string
after a newline, and the empty string before a newline. There are
special character sequences ('\`' and '\'') which always match the
beginning or the end of the buffer. In addition, the period
character does not match a new-line character in multi-line mode.
例は提供されていません。テスト後、/M
このサフィックスが実際に何であるかは不明です。する。それは次のように振る舞うようですいいえ /M
別言します。
それでは、シンプルで重要な使い方は何ですか/M
?ここで「最も単純である」とは、Hello Worldが単純で他のプログラムに関する追加の知識を必要としないことを意味し、「重要」は「/ M」なしではできない注目すべきことをしなければならないことを意味します。
たとえば、次のような場合です。
seq 10 | sed -n '<code>;/<some regexp>/Mp'
...次の動作とは異なります。
seq 10 | sed -n '<code>;/<some regexp>/p'
ベストアンサー1
これは、perl regexまたはPCREで使用されるregex演算子のsフラグと同じですm
。 (s フラグは perl フラグも削除するが、 の一致改行文字がないため、一致するフラグが必要です。 新しいチーム)。perl
(?m)
gsed
M
s
M
sed
.
perl
s
.
-z
これらのフラグは、(NULで区切られたレコードを読み取る)を使用したり、コマンドを使用してパターンスペースに行を追加したりするなど、パターンスペースに複数の行が含まG
れN
ている場合にのみ機能しますs
。
$ seq 3 | sed 'N;s/$/<foo>/g'
1
2<foo>
3
$ seq 3 | sed 'N;s/$/<foo>/Mg'
1<foo>
2<foo>
3
それ以降はN
パターンスペースにが含まれます1<newline>2
。それ以外の場合は、M
パターン$
スペースの終わりのみが含まれます。2)とM
、$
パターンスペースの最初の行の末尾にある2つを一致させます。1、改行文字の前)、そしてパターン空間の終わりから(以降2)。