如何解决如何使用标准实用程序将“.”替换为“.\n”?
如何用一个点和一个新行替换一个点后跟一个空格的所有序列? 在 unix 机器上,使用 POSIX 工具。
我认为 sed
或 tr
可能适合这份工作。但我想不通。
我试过这样的事情
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 举报,一经查实,本站将立刻删除。