搜索字符串并替换windows env中的相应数字

时间:2014-02-24 07:10:14

标签: windows perl shell powershell cygwin

我有一个文件并替换字符串:

示例文件是:

DP_SESSION_ID is a sting for values DP_SESSION_ID is aplicat "DP_S42SETTACC_TYPE"\1\"02" "DP_SAP_CLIENT"\1\"460" "DP_SAP_COMM_CONNECTION"\1\"JAVA_COMM_TOOL_ANALYZER" "DP_SAP_CONNECTION"\1\"JAVA_TOOL_ANALYZER" "DP_SAP_TOOLBI_CONNECTION"\1\"JAVA_TOOLBI_ANALYZER" "DP_SESSION_ID"\1\"808"

我想搜索这个“DP_SESSION_ID”\ 1 \“sting并在文件中替换相应的数字808(windows env),并且我在Windows bat命令或perl命令中使用wad sing line命令我不想要脚本或程序

即使我已经在我的服务器中安装了cygwin工具,所以unix也可以,但是单行命令

server:windows 2008,cygwin x

使用工具:数据存储服务器作业

perl -pi -e 's{" "DP_SESSION_ID"\1\"808 '"}{' "DP_SESSION_ID"\1\"900 '"'"}g' " file name 此代码无效

请给出好的解决方案

2 个答案:

答案 0 :(得分:1)

首先,您不能像在UNIX中那样使用DOS中的单引号。其次,在DOS中使用“-i”时需要指定备份文件/扩展名。第三,我认为你跳过尝试匹配所有那些复杂的引用,并采用更简单的方法。它可能不是最有效的(使用2个正则表达式),但它对我来说非常易读。

这对我有用:

perl -p -i.bak -e "m/\"DP_SESSION_ID\"/ && s/808/900/g" "filename"

希望有所帮助!

答案 1 :(得分:0)

在PowerShell中,您可以尝试以下命令:

get-content input.txt |foreach-object {$_ -replace '"DP_SESSION_ID"\\1\\"808"', '"DP_SESSION_ID"\1\"900"'} | set-content output.txt