gpt4 book ai didi

linux - 在 linux 中使用 sed 或 awk 替换具有双斜杠的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 10:49:30 27 4
gpt4 key购买 nike

我想替换这个

<property name="sourceUrl" value="file://D:/Uploaded Files?move=../../backup&amp;include=.*.ok"/>

有了这个

<property name="sourceUrl" value="file:///tmp/ETL-Files?move=../../backup&amp;include=.*.ok"/>

我正在按照一种方法首先找到行号,然后用所需的文本替换该行,但由于 < 而没有发生这种情况。出现在行的开头。

 grep -n  ^<property name="sourceUrl" value= etl-job-context.xml

我该如何解决这个问题,或者有更好的方法吗?

最佳答案

你可以使用 sed。

sed 's~\(<property *name="sourceUrl" *value="\)[^?]*~\1file:///tmp/ETL-Files~g' file

Basic sed 使用 Basic Regular Expression 引擎进行匹配。在 BRE \(..\) 中称为捕获组。因此,这将捕获从属性标记到值参数的所有字符。并且 ? 之前的剩余字符被 [^?]* 匹配,这意味着匹配除 ? 之外的任何字符,零次或多次.

Sed 使用一些特殊字符作为分隔符。这里我使用了 ~ 因为替换字符串包含 / 斜线。替换中的\1指的是group index 1捕获的chars,后面的chars会追加到捕获的chars后面。请注意,匹配的字符在替换过程中会自动删除。

关于linux - 在 linux 中使用 sed 或 awk 替换具有双斜杠的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31562966/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com