入力する:
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
最初のグループの試合への参照をもう一度参照してください。