如何使用Shell脚本将数据从csv导入到特定格式的文件?

时间:2019-06-28 13:31:06

标签: csv import sh

我们有很多csv文件,并且其中包含的信息我需要获取该信息的文件。我可以手动执行此操作,但这需要花费很多时间,因此我想使用ksh之类的脚本来执行此操作。

我检查了csv文件及其所需的格式,并在每个字段中给了带数字的美元符号。但是我不知道如何制作脚本本身。

因此,这是csv文件,在此值之前,我已将美元符号和我需要的数字放在一起:

#QueueManager;Hostname;Default ServerConnectionChannel;Portnumber;
$1 TEST01;$2 this.is.a.hostname;$3 CPW.TEST.T1;$4 5704;
#Topic/Queue/Connection Factory JndiName;Type TCF/QCF/CF;ServerConnectionChannel;;
$5 jms/imit_pega_prpc_AchmeaCIPWQCF;QCF;CPW.ETST.T1;;
#JndiName;queueName;;;
$6 jms/imit_pega_prpc_AchmeaCIPW_ESBtoCPW_ReqQ;$7 ESB.DTG.CPW;;;
#JndiName;topicName;;;
#JNDI Activation Specification;Name Activation Specification;The JNDI name of the Destination Queue;Act.Spec ConnectionChannel;MaxPoolDepth
$8 eis/imit_pega_prpc_AchmeaCIPWQAS;imit_pega_prpc_AchmeaCIPWQAS;$9 

此模板应使用带有数字的美元符号的字段填充:

<jmsQueueConnectionFactory jndiName="$5" connectionManagerRef="ConMgr6">
<properties.wmqJms
   transportType="CLIENT"
   hostName="$2"
   port="$4"
   channel="$3"
   queueManager="$1"/>
</jmsQueueConnectionFactory>
<connectionManager id="ConMgr6" maxPoolSize="2"/>

<jmsQueue id="$6" jndiName="$6">
<properties.wmqJms
   baseQueueName="$7"
   baseQueueManagerName="$1"/>
</jmsQueue>

<jmsActivationSpec id="$8">
<properties.wmqJms
   transportType="CLIENT"
   destinationRef="$9"
   destinationType="javax.jms.Queue"
   hostName="$4"
   port="$5"
   channel="$3"
   queueManager="$1"/>
</jmsActivationSpec>

还要注意,csv文件中可能有一个jmsQueueConnectionFactory,jmsQueue或jmsActivationSpec多个条目,因此也需要添加这些条目。

我已经使用此选项来过滤以#开头的行:

sed '/^#/' filename.csv > new.txt

但是现在剩下的,我该如何填写模板?

0 个答案:

没有答案