在shell脚本中替换字符串所需的正则表达式

时间:2013-12-02 06:42:57

标签: 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://”和“:8001”之间的字符串以及任何必需的字符串。

有人可以帮我这个。

更多信息: -

我希望在许多文件夹中迭代执行此操作。所以基本上它会搜索每个文件夹中的所有文件并执行必要的更改。

3 个答案:

答案 0 :(得分:2)

您可以使用sed。话说:

sed -r 's|(http://)([^:]*)(:8001)|\1something\3|g' filename

将替换为“http://”和“:8001”与something之间的字符串。

如果您想就地更改文件,请使用-i选项:

sed -i -r 's|(http://)([^:]*)(:8001)|\1something\3|g' filename

答案 1 :(得分:0)

使用Linux shell中的sed命令

sed -i's%OldHost%NewHost%g'/ yourfolder / yourfile

答案 2 :(得分:0)

尝试“for”

 # 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

它为我工作......!