【发布时间】:2018-04-23 15:27:25
【问题描述】:
我有大量具有类似标签语法的文本文件。这些文件包含这样的模式:
<TAG1=foo><TAG-2=\\10.0.0.1\directory\filename.pdf><TAG3> ...
<TAG4=bar><TAG-6=\\10.0.0.1\directory\filename.tif,other content><TAG5>
我需要将这些 UNC 路径的第一部分替换为新路径,意思是:
<TAG1=foo><TAG-2=D:\localdirectory\filename.pdf><TAG3> ...
<TAG4=bar><TAG-6=D:\localdirectory\filename.tif,other content><TAG7>
需要处理大量文件,因此我需要自动执行此路径替换。到目前为止,我用 sed(在 Linux 上)尝试了多个正则表达式,但没有接近解决方案。
#!/bin/bash
# New directory (escaped)
newpath='D:\\localdirectory\\'
# Actual replacement (don't work)
sed -i "s@\(<TAG-2=\)\([^\\]+\.pdf\)@\1${newpath}\2@g" filetoprocess.txt
sed -i "s@\(<TAG-6=\)\([^\\]+\.tif\)@\1${newpath}\2@g" filetoprocess.txt
欢迎提出建议
【问题讨论】:
标签: regex linux windows parsing sed