Unix for цикл с несколькими переменными

Unix for цикл с несколькими переменными

Мне необходимо извлечь 2-е, 3-е и 4-е поля из файла aaa.logи вывести их в виде

- sqlplus -sl dbsnmp/Or8cle@\"COL3:COL4/COL2\"

Вход:

$ cat aaa.log
aaa:fDb:a0081:1800:f1:dsds
aaa:iDb:a0081:1801:i1:dsds
aaa:pDb:a0081:1802:p1:dsds

Ожидаемый результат:

sqlplus -sl dbsnmp/Or8cle@\"a0081:1800/fDb\"    
sqlplus -sl dbsnmp/Or8cle@\"a0081:1801/iDb\"
sqlplus -sl dbsnmp/Or8cle@\"a0081:1802/pDb\"

Я извлек COL2 в файл:

$ cat aaa.log | cut -d":" -f2 > aaa_i.log
$ cat aaa_i.log
fDb
iDb
pDb

и извлекли COL3 и COL4:

$ cat aaa.log | awk -F: '{print  $3  ":" $4}' > aaa_h_p.log
$ cat aaa_h_p.log
a0081:1800
a0081:1801
a0081:1802

Я попробовал использовать код ниже.

  set -f
 IFS='
> '
 set -- $( cat aaa_i.log)
for i in `cat aaa_h_p.log`
do
 printf "%s %s\n" "sqlplus -sl sys/hSys10Nov@\""${i}"/"$1"\""
 done

Выходной ток:

sqlplus -sl dbsnmp/Or8cle@\"a0081:1800/fDb\"
sqlplus -sl dbsnmp/Or8cle@\"a0081:1801/fDb\"
sqlplus -sl dbsnmp/Or8cle@\"a0081:1802/fDb\"

Я получаю только fDb в COL2 в o/p, тогда как мне нужны все значения там. Пожалуйста, помогите мне исправить код. Даже изменения с использованием AWK приветствуются.

решение1

while IFS=: read a b c d e f;do 
    echo sqlplus -sl dbsnmp/Or8cle@\"$c:$d/$b\" 
done < aaa.log 

решение2

Массивы отлично подходят для таких целей (особенно если вы не уверены, сколько у вас полей):

while IFS=: read -a var; do 
  printf 'sqlplus -s1 dbsnmp/Or8cle@\\"%s:%s/%s\\"\n' "${var[2]}" "${var[3]}" "${var[1]}"
done < aaa.log
sqlplus -s1 dbsnmp/Or8cle@\"a0081:1800/fDb\"
sqlplus -s1 dbsnmp/Or8cle@\"a0081:1801/iDb\"
sqlplus -s1 dbsnmp/Or8cle@\"a0081:1802/pDb\"

решение3

Попробуйте следующее решение awk -

vipin@kali:~$ awk 'BEGIN{FS=":"}{print v1$3,$4v2$2v3}' v1='sqlplus -sl dbsnmp/Or8cle@\\"' v2='/' v3='\\"' OFS=":" kk.txt
sqlplus -sl dbsnmp/Or8cle@\"a0081:1800/fDb\"
sqlplus -sl dbsnmp/Or8cle@\"a0081:1801/iDb\"
sqlplus -sl dbsnmp/Or8cle@\"a0081:1802/pDb\"

FS,OFS = разделители полей. v1,v2,v3 = переменные для печати предложений в соответствии с нашими требованиями.

Связанный контент