Ich habe die Anforderung, das 2., 3. und 4. Feld aus einer Datei zu extrahieren aaa.log
und die Ausgabe als
- sqlplus -sl dbsnmp/Or8cle@\"COL3:COL4/COL2\"
Eingang:
$ cat aaa.log
aaa:fDb:a0081:1800:f1:dsds
aaa:iDb:a0081:1801:i1:dsds
aaa:pDb:a0081:1802:p1:dsds
Erwartete Ausgabe:
sqlplus -sl dbsnmp/Or8cle@\"a0081:1800/fDb\"
sqlplus -sl dbsnmp/Or8cle@\"a0081:1801/iDb\"
sqlplus -sl dbsnmp/Or8cle@\"a0081:1802/pDb\"
Ich habe COL2 in eine Datei extrahiert:
$ cat aaa.log | cut -d":" -f2 > aaa_i.log
$ cat aaa_i.log
fDb
iDb
pDb
und extrahierte COL3 und COL4:
$ cat aaa.log | awk -F: '{print $3 ":" $4}' > aaa_h_p.log
$ cat aaa_h_p.log
a0081:1800
a0081:1801
a0081:1802
Ich habe versucht, den folgenden Code zu verwenden.
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
Aktuelle Ausgabe:
sqlplus -sl dbsnmp/Or8cle@\"a0081:1800/fDb\"
sqlplus -sl dbsnmp/Or8cle@\"a0081:1801/fDb\"
sqlplus -sl dbsnmp/Or8cle@\"a0081:1802/fDb\"
Ich bekomme nur fDb in COL2 im O/P, obwohl ich dort alle Werte haben möchte. Bitte helfen Sie mir, den Code zu korrigieren. Auch Änderungen mit AWK sind willkommen.
Antwort1
while IFS=: read a b c d e f;do
echo sqlplus -sl dbsnmp/Or8cle@\"$c:$d/$b\"
done < aaa.log
Antwort2
Arrays eignen sich gut für solche Dinge (insbesondere, wenn Sie nicht sicher sind, wie viele Felder es gibt):
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\"
Antwort3
Versuchen Sie die folgende Awk-Lösung -
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 = Feldtrenner. v1,v2,v3 = Variablen zum Drucken von Sätzen gemäß unseren Anforderungen.