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

时间:2018-01-01 14:27:01

标签: regex bash

我想在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")

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

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

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

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