微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用标准实用程序将“.”替换为“.\n”?

如何解决如何使用标准实用程序将“.”替换为“.\n”?

如何用一个点和一个新行替换一个点后跟一个空格的所有序列? 在 unix 机器上,使用 POSIX 工具。

我认为 sedtr 可能适合这份工作。但我想不通。 我试过这样的事情

sed 's/. /.\n/g' file

阅读 How can I replace a newline (\n) using sed? 并没有让我发生这种情况。

编辑:我在不同的转义之间迷失了方向,忘记了我应该转义点。所以 sed 's/\. /\.\n/g' file我有用。

解决方法

有了 awk,您可以使用它的 gsub 函数轻松完成。这应该适用于任何版本的 awk 恕我直言。您可以简单地将文字 DOT 后跟空格替换为点和 ORS(这是新行),然后简单地打印该行。

awk '{gsub(/\. /,"."ORS)} 1' Input_file
,

并非所有 sed 都会将 \n 视为替换字符串中的换行符。但是你可以转义换行符。
例如:

$ echo foo. bar | sed 's/\. /.\
> /'
foo.
bar

$ n='                               
'
$ echo foo. bar | sed "s/\. /.\\$n/"
foo.
bar
,

使用此 Perl 单行,其中 [.] 是仅包含句点的字符类:

perl -pe 's{[.] }{.\n}g' in_file

就地更改文件:

perl -i.bak -pe 's{[.] }{.\n}g' in_file

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。