sed 过滤器来替换 '!'对于句点和'!!对于行尾的句点
我想编写一个 sed 过滤器,将其输入中的所有句点更改为感叹号,除非句点位于行尾,在这种情况下,句点将替换为 2 个感叹号(即 !!)。
到目前为止,这就是我所拥有的:
sed -e 's/\./\!/g' -e 's/\!\n/\!\!\n/g' input_exp
其中 input_exp 是一个文件,其中写有几句话。但该命令不起作用。 '\n' 不是 unix/bash 中正确的行结束符吗? '\n' 之前需要加一个 '\' 吗?
感谢您的帮助。
I want to write a sed filter that changes all periods in its input to exclamation marks, unless the period is at the end of a line, in which case the period is replaced with 2 exclamation marks (ie. !!).
So far, this is what I have:
sed -e 's/\./\!/g' -e 's/\!\n/\!\!\n/g' input_exp
where input_exp is a file that has a few sentences written in it. The command does not work though. Is '\n' not the correct end of line character in unix/bash? Do I need an extra '\' before '\n'?
Thanks for your help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我使用
_
而不是/
以获得稍高的可读性。 也可以使用当然,如果您愿意, 。
\n
代表换行符,与行尾不同。I've used
_
instead of/
for a slightly higher degree of readibility. You can also useif you want to, of course.
\n
stands for newline, and is not the same as end of line.在正则表达式中使用
$
表示“行尾”。Use
$
for 'end of line' inside the regex.