一行中有多个匹配的文本行操作

问题描述 投票:-1回答:1

我想在bash脚本中的一行上执行以下操作:

情况1

"text1=text2 some text /orig/path/s/abc.la more text"

要求的结果:

"text1=text2 some text /replacement/path/t/abc.la more text"

案例2

"text1=text2 some text /orig/path/s1/abc.la more /orig/path/s1/xzy.la text"

要求的结果:

"text1=text2 some text /replacement/path/abc.la more /replacement/path/xzy.la text"

所以当它与给定的扩展名匹配时,我希望替换行中文件名的所有实例的路径(在本例中为“* .la”)

提前致谢。

regex bash
1个回答
1
投票

目标始终是最简单的模式 - 因为您所需的替换似乎只需要“记住”文件名本身并且不对原始路径做任何事情,您可以使用非贪婪量化的通配符.*?来吃掉所有东西在第一个和最后一个/之间,使模式非常简单:

模式:/.*?/(\w+).la

替换:/mypath/here/$1.la

https://regex101.com/r/jTXm00/1/

© www.soinside.com 2019 - 2024. All rights reserved.