У нас есть много 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
Но теперь остальное, как я могу заполнить шаблон?