在IDL中使用正则表达式来转义目录名中的特殊字符

时间:2013-05-15 20:26:56

标签: regex idl

我正在尝试在群集上运行模型,但IDL在使用openw时会抛出错误,因为文件位置名称中有[](这是我在一些测试后的结论)。我想做的是 将IDL添加到包含转义字符的略有不同的字符串。我相信一种方法是使用正则表达式,但我可以使用一些帮助,特别是不太了解IDL。

temp_dir='/local/scratch/1940320[2000].cluster.name/temp/area'
openw,12,temp_dir+'file.dat'

我将如何发送:

temp_dir2='/local/scratch/1940320\[2000\].cluster.name/temp/area'
openw,12,temp_dir2+'file.dat'

该数字代表集群上的jobid,在运行之前我不知道这一点。 /local/scratch/$PBS_JOBID.cluster.name保存在$ TMPDIR中,我正在使用getenv('TMPDIR') 谢谢!

2 个答案:

答案 0 :(得分:0)

嗯,这有点尴尬,但这应该有效:

IDL> temp_dir = '/local/scratch/1940320[2000].cluster.name/temp/area'
IDL> temp_dir = mg_streplace(temp_dir, '(\[|\])', '\\$1', /global)
IDL> print, temp_dir
/local/scratch/1940320\\[2000\\].cluster.name/temp/area
IDL> temp_dir = mg_streplace(temp_dir, '\\\\', '\', /global)
IDL> print, temp_dir
/local/scratch/1940320\[2000\].cluster.name/temp/area
GitHub上提供了

MG_STREPLACE

答案 1 :(得分:0)

一位同事为我写了这封信:

IDL> spawn,'printenv TMPDIR | sed "s/\[/\\\[/" | sed "s/\]/\\\]/"',mytemp