2015-10-19 4 views
0

В рамках Ab Initio Reformat мне нужно отображать поля ввода для вывода и скрытые данные в соответствии с типом данных. Я написал скрипт vba для автоматизации этого. PFBПреобразование сценария VBA в скрипт Unix

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 сценариев

ответ

0

Если ваш входной файл 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; 

 Смежные вопросы

  • Нет связанных вопросов^_^