使用sed或python用正斜杠替换所有反斜杠

时间:2014-08-08 05:30:33

标签: python regex sed

目标:用正斜杠替换所有反斜杠。

实际字符串:\\ test.abc.com \ path1 \ path1_1 \ 123 \ ubntu

预期字符串://test.abc.com/path1/path1_1/123/ubntu

试图让上述工作变得非常重要

有什么想法吗?

编辑:在Jenkins中读取为Env变量 完整的用例是:它们通过jenkins作为Windows UNC Paths传递,需要在Unix上安装

在Python上* nix

当通过变量尝试时,它的行为有所不同!当我通过python读取变量时,' \'字符串被翻译切断。我已经尝试将repr(变量)与.decode(' string_escape')结合使用但无济于事。 raw_input()在unix上的python中没有帮助

这里是主要的名为test1.py

的python脚本

S =应用re.sub(R' \',R' /',再版(sys.argv中[1] .decode(' string_escape')) , 哪个是运行的 python test1.py \ test.abc.com \ path1 \ path1_1 \ 123 \ ubntu ,输出结果是 //test.abc.compath1path1_1123ubntu; 为什么python会思考' \'无法显示:-( -

现在通过env变量尝试通过sed。

3 个答案:

答案 0 :(得分:2)

您可以使用其他工具,但翻译字符是为{:1>创建的作业tr

$ tr '\\' '/' < file
//test.abc.com/path1/path1_1/123/ubntu

答案 1 :(得分:1)

针对环境变量进行了更新。

你说路径在环境变量中(比方说UNC_PATH),所以在Python中:

# test.py
import re, sys

s = re.sub(r'\\', r'/', sys.argv[1])
print s

并像这样调用它:

$ UNC_PATH=\\\\test.abc.com\\path1\\path1_1\\123\\ubntu
$ python test.py $UNC_PATH
//test.abc.com/path1/path1_1/123/ubntu

对于sed,请执行以下操作:

$ echo $UNC_PATH | sed -e 's/\\/\//g'
//test.abc.com/path1/path1_1/123/ubntu

原始回答

使用sed:

$ echo '\\test.abc.com\path1\path1_1\123\ubntu' | sed -e 's/\\/\//g' 
//test.abc.com/path1/path1_1/123/ubntu

在Python中:

>>> import re
>>> s = re.sub(r'\\', r'/', r'\\test.abc.com\path1\path1_1\123\ubntu')
>>> print s
//test.abc.com/path1/path1_1/123/ubntu

答案 2 :(得分:0)

通过sed,

$ sed 's~\\~/~g' file
//test.abc.com/path1/path1_1/123/ubntu

通过Python,

>>> import re
>>> s = r'\\test.abc.com\path1\path1_1\123\ubntu'
>>> print s
\\test.abc.com\path1\path1_1\123\ubntu
>>> m = re.sub(r'\\', r'/', s)
>>> print m
//test.abc.com/path1/path1_1/123/ubntu