Sed正規表現 - 生の一致を含める

Sed正規表現 - 生の一致を含める

入力する:

dsfgsdf8gfsd
2011.06.26. v
iudsfg98sdfg
sosdufgsdfg
2011.06.27. h
8xdofguiosdfg
jdasfhasd89fa
2011.06.28. k
ydsfgsdgsdg
dsfgdsfzfszgh
2011.06.29. sze
ds9fgisdfgsdfg
asdfasdfasddf
2011.06.30. cs
dsg789sdiofgsdg
dsfig89dsfgds
2011.07.01. p
sd9fg8sdgsdg
sdlfjgsd89öfgxcbv
dsglsd9gcxbv
dsflgjsdlfgfsdg
sdfsdfgdxfgxc
2011.07.02. szo
cvbdsgfsd
2011.07.03. v
dfgsdfgsd
2011.07.04. h
sdfgsdfgsdg

たとえば、sedを使用してこの出力をどのように取得できますか? (またはパール?)

2011.06.26. v
iudsfg98sdfg
sosdufgsdfg
----------
2011.06.27. h
8xdofguiosdfg
jdasfhasd89fa
----------
2011.06.28. k
ydsfgsdgsdg
dsfgdsfzfszgh
----------
2011.06.29. sze
ds9fgisdfgsdfg
asdfasdfasddf
----------
2011.06.30. cs
dsg789sdiofgsdg
dsfig89dsfgds
----------
2011.07.01. p
sd9fg8sdgsdg
sdlfjgsd89öfgxcbv
dsglsd9gcxbv
dsflgjsdlfgfsdg
sdfsdfgdxfgxc
----------
2011.07.02. szo
cvbdsgfsd
----------
2011.07.03. v
dfgsdfgsd
----------
2011.07.04. h
sdfgsdfgsdg

だから私は変更したいと思います:

2011.06.26. v

そして

2011.06.27. h

など:

----------
2011.06.26. v

そして

----------
2011.06.27. h

私はこれを試しました(笑わないでください:D):

sed "s/[0-9]\{4\}\.[0-9]\{2\}\.[0-9]\{2\}\. /WTF/g"

しかし、sedで「h、k、sze、cs、p、szo、v」を一致させる方法や、一致する内容を「WTF」(in ... / WTF / g」)に入れる方法がわかりません。

誰でもどんなアイデアがありますか? :\

ありがとうございます!

ベストアンサー1

始点は次のsed行です。

$ echo 2011.06.26. v | sed 's/^\([0-9]\+\.[0-9]\+\.[0-9]\+\. \([hv]\|sze\)\)$/----------\n\1/'
----------
2011.06.26. v

()|+sedはデフォルトの正規表現構文(デフォルト)を使用するため、特殊な意味(グループ化、置換、1つ以上)を取得するには文字をエスケープする必要があります。\1最初のグループの試合への参照をもう一度参照してください。

おすすめ記事