用 sed 替换一行中的最后一个字符

发布于 2024-12-06 15:22:53 字数 167 浏览 0 评论 0原文

我试图用相同的字符加引号 ' 替换一行中的最后一个字符

这是 sed 代码

 sed "s/\([A-Za-z]\)$/\1'/g" file1.txt > file2.txt

,但不起作用。错误在哪里?

I am trying to replace the last character in a line with the same character plus a quotation mark '

This is the sed code

 sed "s/\([A-Za-z]\)$/\1'/g" file1.txt > file2.txt

but does not work. Where is the error?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

凑诗 2024-12-13 15:22:53

try:

sed "s/\([a-zA-Z]\)\s*$/\1\'/" file

这将替换行中的最后一个字符,后面没有空格或有多个空格。

克里斯·HTH

try:

sed "s/\([a-zA-Z]\)\s*$/\1\'/" file

This will replace the last character in the line followed by none or many spaces.

HTH Chris

只为守护你 2024-12-13 15:22:53

用字符本身替换字符似乎毫无意义,因此请尝试以下操作:对于以字母结尾的行,在末尾添加引号:

sed "/[a-zA-Z]$/s/$/'/"

It seems pointless to replace a character with itself, so try this: for lines ending with a letter, add a quote to the end:

sed "/[a-zA-Z]$/s/$/'/"
还给你自由 2024-12-13 15:22:53

这符合您的要求:

sed "s/\(.\)$/\1'/" file1.txt > file2.txt

This does what you ask for:

sed "s/\(.\)$/\1'/" file1.txt > file2.txt
半夏半凉 2024-12-13 15:22:53

您的行仅匹配具有单个字符的行。请注意,s 操作仅在匹配时生效,而不是仅当该行的子集与正则表达式匹配时才生效。

Your line only matches a line with a single character. Note that the s operation only takes effect if the line matches, not if only a subset of the line matches the regex.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文