Преобразование сценария VBA в сценарий Unix
Как часть Ab Initio Reformat мне нужно сопоставить поля ввода для вывода и скрыть в соответствии с там тип данных. Я написал скрипт VBA для автоматизации этого. PFB
Sub reformat()
Dim sel As String
Dim j As String
sel = ""
Sheet1.Activate
k = Cells(Rows.Count, "A").End(xlUp).Row
MsgBox (k - 1)
For i = 2 To k
If Cells(i, 2).Value = "1" Then
Cells(i, 5).Value = "out." + Cells(i, 1).Value + "::" + "in." + Cells(i, 4).Value
End If
If Cells(i, 2).Value = "Lkp" Then
Cells(i, 5).Value = "out." + Cells(i, 1).Value + "::" + "first_imp(" + Cells(i, 3) + ")." + "in." + Cells(i, 4).Value
End If
If Cells(i, 2).Value = "DT" Then
Cells(i, 5).Value = "out." + Cells(i, 1).Value + "::" + Cells(i, 3) + "in." + Cells(i, 4)
End If
Next i
Вывод как,
Input Datatype Target
abc string abc out.abc::in.abc
gbf decimal gbf out.gbf::(decimal(""))in.gbf
Я хочу написать этот код в Unix, чтобы я мог удалить зависимость от перехода в Windows, выполняя это и копируя результат обратно в Unix. Я могу поместить файл в Unix как:
Input|Datatype|Target
abc|string|abc
gbf|decimal|gbf
И я пытаюсь получить выходной файл как:
out.abc::in.abc
out.gbf::(deicmal(""))in.gbf
Пожалуйста, помогите не так много осведомлены о сценариях Shell
1 ответ
Если ваш входной файл input.psv содержит:
Input|Datatype|Target
abc|string|abc
gbf|decimal|gbf
Вы можете использовать скрипт convert.ksh как таковой:
#!/usr/bin/ksh
if [[ -z ${1} ]]
then
echo "";
echo "Usage: $0 <pipe delimited file name>";
echo "Example: $0 file_name.psv";
echo "";
exit 1;
fi
for i in $(cat ${1}|grep -vP '^\s*Input\s*\|\s*Datatype\s*\|\s*Target')
do
echo ${i}|awk -F'|' '{print "out." $1 "\t::\t(" $2 "(\"\"))in." $3 ";"}';
done
Чтобы сделать следующее:
./convert.ksh ./input.psv
out.abc :: (string(""))in.abc;
out.gbf :: (decimal(""))in.gbf;