Regex 替换shell脚本中的字符串所需的正则表达式
谁能帮我在linux中编写一个shell脚本,它将替换特定文件中的主机名 我有多个具有特定ip地址的文件Regex 替换shell脚本中的字符串所需的正则表达式,regex,linux,shell,Regex,Linux,Shell,谁能帮我在linux中编写一个shell脚本,它将替换特定文件中的主机名 我有多个具有特定ip地址的文件 http://10.160.228.12:8001/soa-infra/services/default/AIAAsyncErrorHandlingBPELProcess/client?WSDL http://VQAIAAPPDEV:8001/soa-infra/services/default/AIAAsyncErrorHandlingBPELProcess/client?WSDL 基
http://10.160.228.12:8001/soa-infra/services/default/AIAAsyncErrorHandlingBPELProcess/client?WSDL
http://VQAIAAPPDEV:8001/soa-infra/services/default/AIAAsyncErrorHandlingBPELProcess/client?WSDL
基本上,我想用任何必需的字符串替换“http://”和“:8001”之间的字符串
有人能帮我做这个吗
更多信息:-
我想在许多文件夹中迭代执行此操作。因此,基本上它将搜索每个文件夹中的所有文件并执行必要的更改。您可以使用
sed
。说:
sed -r 's|(http://)([^:]*)(:8001)|\1something\3|g' filename
将“http://”和“:8001”之间的字符串替换为something
如果要就地更改文件,请使用-i
选项:
sed -i -r 's|(http://)([^:]*)(:8001)|\1something\3|g' filename
使用Linux shell中的sed命令 sed-i的%OldHost%NewHost%g'/yourfolder/yourfile尝试使用“for”
它对我有用 如果我想反复签入多个文件夹中的文件并进行必要的更改,该怎么办?@user3056318使用
find
。你可以说:find/some/path-typef-exec sed-i-r's |(http://)([^:]*)(:8001)|\1something\3 | g'{}代码> @ USER 3056318考虑它是否为你工作。您可能还需要参考。
# cat replace.txt
http://10.160.228.12:8001/soa- infra/services/default/AIAAsyncErrorHandlingBPELProcess/client?WSDL
http://VQAIAAPPDEV:8001/soa-infra/services/default/AIAAsyncErrorHandlingBPELProcess/client?WSDL
# for i in `cat replace.txt | awk -F: '{print $2}' | sed 's/^\/\///g' | sed '/^$/d'` ; do sed -i "s/$i/Your_hostname/" replace.txt ; done
# cat replace.txt
http://Your_hostname:8001/soa- infra/services/default/AIAAsyncErrorHandlingBPELProcess/client?WSDL
http://Your_hostname:8001/soa-infra/services/default/AIAAsyncErrorHandlingBPELProcess/client?WSDL