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

用sed替换行中的最后一个字符,sed,Sed,我试图用相同的字符加上引号替换行中的最后一个字符。 这是sed代码 sed "s/\([A-Za-z]\)$/\1'/g" file1.txt > file2.txt 但是不起作用。错误在哪里?您的行只匹配一个字符的行。请注意,s操作仅在行匹配时生效,而不是仅当行的子集匹配正则表达式时生效。请尝试: sed "s/\([a-zA-Z]\)\s*$/\1\'/" file 这将替换行中的最后一个字符,后跟无空格或多空格 HTH Chris这满足了您的要求: sed "s/\(.\)$/

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

这是sed代码

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

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

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

请尝试:

sed "s/\([a-zA-Z]\)\s*$/\1\'/" file
这将替换行中的最后一个字符,后跟无空格或多空格


HTH Chris

这满足了您的要求:

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

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

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

对我有用。您确定行中的最后一个字符是
[A-Za-z]
中的一个吗?如果将
[A-Za-z]
替换为
,是否有效?@emanuele,您编写了[A-Za-z]$,但希望匹配一个圆点?sed“s/(.)$/\1'/g”file1.txt>file2.txt这适用于以字母结尾的行,可能后跟空格。我很高兴OP找到了他的答案,但这不是他想要的+1用于读心术;-)