2015-10-07 49 views
0

我想使用sed更改文本中字符串的最后一个字母。举例来说,如果我有更改字符串的最后一个字母

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sed felis maximus, mattis purus non, accumsan nunc. 

我想用ɻ替代所有最后的R:

Lorem ipsum doloɻ sit amet, consectetuɻ adipiscing elit. In sed felis maximus, mattis purus non, accumsan nunc. 

请注意,在每个字非最后的R则留在最后一句。

我找到了一种方法,使用。$而不是单词中的最后一个字符。

+2

使用'\ b'它是一个字边界。不知道它是否适用于sed虽然 –

+1

@JorgeCampos是的,它的工作原理。 'sed's/r \ b/X/g'' –

+1

https://regex101.com/r/pK0zL6/1 –

回答

3

您可以使用\b来解决单词边界问题。 最后一个字母是字边界之前的字母。

这给了我们以下命令:

sed -r 's/r\b/ɻ/g' file 

我节省了捕获组1边界本身的字,并通过ɻ更换r

请注意,\b是所谓的零宽度断言。这意味着它对前面的图案(或后面的图案)有影响,但不包括字符进入匹配本身。感谢Lucas Trzesniewski

+0

'\ b'是一个零宽度断言。无需捕获它,'\ 1'将始终是一个空字符串。 –

+0

@LucasTrzesniewski谢谢!不知道! – hek2mgl

相关问题