如何使用标准实用程序将“.”替换为“.\n”?
How to replace ". " with ".\n" with standard utilities?
如何用点后跟新行替换所有点后跟 space 的序列?
在 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 后跟 space 和点和 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 单行代码,其中 [.]
是一个仅由句点组成的字符 class:
perl -pe 's{[.] }{.\n}g' in_file
就地更改文件:
perl -i.bak -pe 's{[.] }{.\n}g' in_file
如何用点后跟新行替换所有点后跟 space 的序列? 在 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 后跟 space 和点和 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 单行代码,其中 [.]
是一个仅由句点组成的字符 class:
perl -pe 's{[.] }{.\n}g' in_file
就地更改文件:
perl -i.bak -pe 's{[.] }{.\n}g' in_file