理由説明ここ。ピリオドとスペース(たとえば、.\t
または)をピリオドと改行文字、スペースに置き換えたい.\n
(例の文字列をそれぞれまたは.\n\t
に変更.\n\n
)。
Bash / Linuxでこれを効率的に実行できますか?
(私は基本的なsedを知っていますが、このようなパターンを処理するのに十分ではありません。)
答え1
sed
:
sed -E 's/\.([[:space:]]|$)/.\
\1/g'
GNUの使用sed
:
sed -E 's/\.(\s|$)/.\n\1/g'
答え2
GNUでグループ化を使用できますsed
sed -E 's/\.(\s)/.\n\1/g' file
()
グループ化は、後で一致する正規表現の一部を使用しようとするときに使用されます。
グループはソートされ、番号でグループを参照できます。たとえば、ここにあります。\1
-E
(
エスケープを防ぐには、拡張正規表現を有効にし、)