如何仅使用sed替换一行中的最后一个匹配项?

时间:2017-10-27 08:17:36

标签: sed replace text-processing

使用sed,我可以使用

替换一行中的第一个匹配项
sed 's/pattern/replacement/'

所有比赛都使用

sed 's/pattern/replacement/g'

如何只替换最后匹配,无论之前有多少匹配?

3 个答案:

答案 0 :(得分:3)

一种有趣的方法是使用rev来反转每一行的字符并向后写你的sed替换。

rev input_file | sed 's/nrettap/tnemecalper/' | rev

答案 1 :(得分:2)

从我在其他地方发布的内容复制粘贴:

Response response;
        String xmlRequest= buildMerchantNBPreferencesRequest(accountNumber,emailID,thresholdValue);
        Variant variant = new Variant(MediaType.APPLICATION_XML_TYPE, null, null, "XML");        
        Invocation.Builder builder = merchantPreferencesClient.request().header("Content-Encoding", "XML").property("Content-Encoding", "XML");
        Invocation invocation =    builder.header("Content-Encoding", "XML").buildPost(Entity.entity(xmlRequest, variant));
        response = invocation.invoke();

进一步阅读:

答案 2 :(得分:2)

这可能适合你(GNU sed):

sed 's/\(.*\)pattern/\1replacement/' file

使用贪婪吞噬模式空间然后regexp引擎将退回到该行并找到第一个匹配,即最后一个匹配。