如何处理不可打印的ASCII字符参数?

时间:2010-01-20 19:00:12

标签: unix shell solaris ksh

我正在开发一个项目,我们正在处理使用ksh脚本和Perl脚本从数据库表导入/导出数据。我们有一个将数据从表导出到文件的现有流程,然后将其导入另一个系统。

这是catch - 导出进程转储管道分隔文件,而执行导入的系统需要由ASCII组分隔符字符分隔的文件,即十进制29,十六进制1d或八进制35.它在vi中显示为^]现在,我正在通过Perl脚本转换分隔符。我想做的是告诉我们的导出过程只使用我们期望的分隔符。类似的东西:

export_table.ksh -d'\ 035'

问题是我无法弄清楚如何将此字符传递给导出脚本。

我尝试了各种单引号,双引号,反斜杠以及此字符的八进制和十六进制版本的组合。

我在Solaris 10上使用ksh和/或Perl。

2 个答案:

答案 0 :(得分:2)

你试过了吗?

$ '\ X29'

实际上尝试这个]:

echo $'\x5d'

和^

echo $'\x5e'

所以你只需要这样做:

export_table.ksh -d $'\x5e\x5d'

答案 1 :(得分:0)

在bash(1)中,可以使用^ v为字符添加前缀,以逐字输入该字符。也许ksh(1)做同样的事情?