- 締切済み
awkスクリプトの作成について
文末に"。""!""?"があれば改行し、さらに文の途中で改行されていたら1行に繋げ、"。""!""?"の後に"」"がある場合は、"。」""!」""?」"で改行するスクリプトを教えてください。途中まではできたので、参考に載せておくのでお願いします。 # onereq.awk # 分析対象テキストを、1文1行(レコード)形式に整形する # 日本語用 # 文末記号 。!?があれば改行 # 文中での改行は1行につなげる # 「」をうまく表示させる { gsub( /。/, "。\n", $0) gsub( /?/, "?\n", $0) gsub( /!/, "!\n", $0) print( $0 ) }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
noname#194317
回答No.2
入力される文章は、一行の中に何個も"。""!""?"がありますか? 例えば… これが文頭です。「ここはまだ文末ではありませんね?」「ここもまだです。」ここは行末だが まだ文末ではありません。ここでやっと文末だ! 上記の例のようなパターンが存在すると、処理が面倒になります。
- nightowl
- ベストアンサー率44% (490/1101)
回答No.1
こんばんは。 1段落(空行で区切られたレコード)があまり大きくなければ これで十分だと思います。以下の「$0」はすべて省略可能です。 BEGIN{ RS = "" } { gsub(/\n/, "", $0) gsub(/(。|!|?)(」)?/, "&\n", $0) print $0 }
お礼
遅くなって申し訳ありません。 回答ありがとうございました。とても役に立ちました。 また質問することがあるかと思いますが、そのときももしよければご協力お願いします。 この度は本当にありがとうございました。