我想对以下行进行字符串替换。我不想替换任何未在URL格式中显示的事件,因此{@ 1}}在一行上或以可变格式(secure.XYZ.ab.mydomain.com
)不应被替换。
$myvar = secure.XYZ.ab.mydomain.com
我遇到的问题是,https://secure.XYZ.ab.mydomain.com -> https://secure.future.qa.mydomain.com
和XYZ
可能是3个不同变量的组合。因此,为了简化操作,我想在ab
和https://
之前的时段之间替换所有内容。
忘记添加,我将循环遍历目录中的文件。
答案 0 :(得分:2)
echo "https://secure.XYZ.ab.mydomain.com"|sed -r 's#(https://secure\.).*(\.mydomain.com)#\1future.qa\2#'
https://secure.future.qa.mydomain.com
AWK:
echo "https://secure.XYZ.ab.mydomain.com"|awk 'BEGIN{FS=OFS="."} {$2="future";$3="qa"}1'
https://secure.future.qa.mydomain.com
答案 1 :(得分:1)
你可以:
echo "https://secure.XYZ.ab.mydomain.com" | sed -e 's+https://[^/]*\.mydomain.com+https://secure.future.qa.mydomain.com+'
如果它在文件中,您可以:
sed -ie 's+https://[^/]*\.mydomain.com+https://secure.future.qa.mydomain.com+g' <filename>
答案 2 :(得分:0)
搜索并替换目录中的所有文件:
find . -maxdepth 1 -type f -exec sed 's_https://.*[.]mydomain[.]com_https://secure.future.qa.mydomain.com_g' {} \;