我有一个文件并替换字符串:
示例文件是:
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
此代码无效
请给出好的解决方案
答案 0 :(得分:1)
首先,您不能像在UNIX中那样使用DOS中的单引号。其次,在DOS中使用“-i”时需要指定备份文件/扩展名。第三,我认为你跳过尝试匹配所有那些复杂的引用,并采用更简单的方法。它可能不是最有效的(使用2个正则表达式),但它对我来说非常易读。
这对我有用:
perl -p -i.bak -e "m/\"DP_SESSION_ID\"/ && s/808/900/g" "filename"
希望有所帮助!
答案 1 :(得分:0)
get-content input.txt |foreach-object {$_ -replace '"DP_SESSION_ID"\\1\\"808"', '"DP_SESSION_ID"\1\"900"'} | set-content output.txt