regex sed:\1不工作|增强减价图像路径; [非公开会议]

bq8i3lrv  于 2023-01-10  发布在  其他
关注(0)|答案(2)|浏览(113)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
2天前关闭。
Improve this question
当移动一个markdown文件时,我需要更改图像路径。"Here"需要替换为../wp-content/uploads/。所以我尝试了
sed -i 's|\!\[.*\](|\1..\/wp-content\/uploads\/|g' filename.md
它实际上找到了所有![anything-here](patterns),但没有替换。

sed: -e Ausdruck #1, Zeichen 41: Ungültiger Verweis \1 im rechten Teil (»RHS«) des »s«-Befehls" - "invalid link \1...".

我的猜测是'\1'应该粘贴第一个搜索字符串的结果-但它似乎没有为我这样做。
示例:

![](icons/tryton-menu.svg) Verwaltung > (strikte) Nummerkreise

应改为

![](../wp-content/uploads/icons/tryton-menu.svg) Verwaltung > (strikte) Nummerkreise

以及

![Suche aufrufen](Den_Tryton-Client_kennenlernen/Bilder_Suche_nach_Datens%C3%A4tzen/sucheaufrufen.png?fileId=20485#mimetype=image%2Fpng&hasPreview=true)

应改为

![Suche aufrufen](../wp-content/uploads/Den_Tryton-Client_kennenlernen/Bilder_Suche_nach_Datens%C3%A4tzen/sucheaufrufen.png?fileId=20485#mimetype=image%2Fpng&hasPreview=true)
0kjbasz6

0kjbasz61#

使用sed,可以返回与&匹配的内容

$ sed -i.bak 's~\!\[[^(]*(*~&../wp-content/uploads/~' input_file
![Suche aufrufen](../wp-content/uploads/Den_Tryton-Client_kennenlernen/Bilder_Suche_nach_Datens%C3%A4tzen/sucheaufrufen.png?fileId=20485#mimetype=image%2Fpng&hasPreview=true)
![](../wp-content/uploads/icons/tryton-menu.svg) Verwaltung > (strikte) Nummerkreise
x4shl7ld

x4shl7ld2#

请使用此选项:

sed -i -E 's|(\!\[.*\]\()|\1../wp-content/uploads/icons/tryton-menu.svg/|g' filename.md
#            ^----------^ ^^
#        captured group  | restore with \1

您需要( )来捕获和使用\1恢复

输出

![](../wp-content/uploads/icons/tryton-menu.svg/icons/tryton-menu.svg) Verwaltung > (strikte) Nummerkreise

正则表达式匹配如下:

| 节点|解释|
| - ------| - ------|
| (|分组并捕获到\1:|
| \!|!|
| \[| [|
| .*|除\n之外的任何字符(0次或更多次(匹配尽可能多的数量))|
| \]|]|
| \(|(英文)|
| )| \1的结尾|

相关问题