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

Unix 如何处理不可打印的ASCII字符参数?,unix,shell,solaris,ksh,Unix,Shell,Solaris,Ksh,我正在从事一个项目,我们正在使用ksh脚本和Perl脚本从数据库表导入/导出数据。我们有一个将数据从表导出到文件的现有流程,然后将其导入另一个系统 这里有一个问题-导出过程转储管道分隔的文件,而执行导入的系统需要由ASCII组分隔符(十进制29、十六进制1d或八进制35)分隔的文件。它在vi中显示为^],现在,我正在通过Perl脚本转换分隔符。我想做的是告诉我们的导出过程只使用我们期望的分隔符。比如: export_table.ksh-d'\035' 问题是我不知道如何将这个字符传递给导出脚本

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

这里有一个问题-导出过程转储管道分隔的文件,而执行导入的系统需要由ASCII组分隔符(十进制29、十六进制1d或八进制35)分隔的文件。它在vi中显示为^],现在,我正在通过Perl脚本转换分隔符。我想做的是告诉我们的导出过程只使用我们期望的分隔符。比如:

export_table.ksh-d'\035'

问题是我不知道如何将这个字符传递给导出脚本

我试过各种单引号、双引号、反斜杠和八进制和十六进制的组合

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

您是否尝试过:

$'\x29'

实际上,你可以试试这个:

echo $'\x5d'
以及^

echo $'\x5e'
所以你只需要做:

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

在bash(1)中,可以在字符前面加^v以逐字输入该字符。也许ksh(1)也会这样做?

很抱歉,我的问题不够清楚。我已经更新了我想要的工作示例。我不希望^]作为分隔符。如果我以预期的格式打开其中一个文件,vi就会显示这样的内容。我想要组分隔符ASCII字符,它是ASCII码29或十六进制1D。我会尝试一下你的建议,并让你知道它是否适用。这是可行的,但我需要能够从脚本中完成,而不仅仅是以交互方式。出于这个原因,ennuikiller的答案稍微好一点。对于octal,只需在第一个单引号前面添加一个美元符号:
$'\035'