传递“|”作为unix脚本的参数

时间:2017-03-01 12:21:50

标签: csv unix pipe parameter-passing delimiter

我编写了一个通用的unix脚本来从任何csv加载oracle表。现在csv中的delimeter(字段分隔符)可以是','或'|'或':'等。 因此,我试图明确地将分隔符作为参数传递给脚本,并且它对大多数的分界符号工作正常但是当我试图通过时然后它没有给我正确的结果,因为它隐含地转换|到,

ksh -x myscript csv_name |

#not working

ksh -x myscript csv_name , 

#working

请告诉我是否有逃生用途?

1 个答案:

答案 0 :(得分:0)

在我的机器中测试,您需要使用以下命令 -

ksh -x test.sh file "|"

OR

ksh -x test.sh file \|

OR

ksh -x test.sh file '|'

我们需要禁用" |"的功能使用转义,单引号或双引号。

  

测试 -

cat file
A|B|B|A
A|A|A
B|A|B|A
B|B
A|A
A|B
A|A|B

cat test.sh
vFile=$1
sep=$2
awk -F "$sep" '{print $1,$2}' ${vFile}

ksh -x test.sh file "|"
A B
A A
B A
B B
A A
A B
A A