Как импортировать данные из CSV в файл определенного формата с помощью сценария оболочки? - PullRequest
0 голосов
/ 28 июня 2019

У нас есть много 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

Но теперь остальное, как я могу заполнить шаблон?

...