Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Frage zu Aktion print bei gawk

Frage Entwicklung Batch & Shell

Mitglied: Kongootto

Kongootto (Level 1) - Jetzt verbinden

28.03.2012, aktualisiert 29.03.2012, 1901 Aufrufe, 1 Kommentar

Hallo Community,

mein Problem, welches mich verzeifeln, lässt bezieht sich auf die dynamische Auswertung einer .csv Datei durch gawk; anbei der betreffende Code:

01.
INFILE=${L2001HOME}/scripts/fibu/infile_uvnfin.csv 
02.
 
03.
cat $INFILE | while read line; do 
04.
        ANZAHL=`echo $line | gawk -F';' '{print NF}'`  #Anzahl der Wörter getrennt durch ; pro Zeile 
05.
        echo $ANZAHL 
06.
        for ((i=2; i<=$ANZAHL; i++)); do 
07.
                MANDANT=`echo $line | gawk -F';' '{print $i}'` #hier soll immer das i-te Wort pro Zeile ausgegeben werden ausgehende vom 2ten Wort 
08.
                echo $MANDANT 
09.
        done 
10.
done 
11.
 
Mir gelingt es einfach nicht das print $i beim Durchlauf der Schleife dynamisch mit gawk auszuwerten. Wenn ich print $2 oder $3 setzte habe ich zwar das Ergbenis was ich brauche; allerdings nicht dynmasich da eine Zeile 2..n Wörter enthalten kann.

Nachtrag: Ich habe auch schon sowas wie MANDANT=`echo $line | gawk -F';' '{print $"echo$i"}'` probiert; aber das haut nicht hin. Hat denn keiner eine Idee.


Ich hoffe jemand kann mir bei diesem, vermutlich ganz banalem, Problem helfen.

LG
Kongootto
Mitglied: Kongootto
29.03.2012 um 15:50 Uhr
Hallo,

hier nochmal der Verfasser: habe das Problem mitlerweile selbst gelöst: man kann gawk durch den Paramter -v eine Variable mitgeben; sieht dann in etwas so aus:

01.
cat $INFILE | while read line; do 
02.
        MANDANT=`echo $line | gawk -F';' '{print $1}'` #Mandantennummer der zu kopierenden Datei 
03.
        echo "Verteilen der Buchungslisten für Mandant $MANDANT:" >> $PROTO 
04.
 
05.
        #echo $line | gawk -F';' '{ for(i=2;i<=NF;i++)  print $i}' 
06.
        ZAEHLER=2 # die Listenverzeichnisse beginnen ab Spalte 2 
07.
        SPALTEN=`echo $line | gawk -F';' '{print NF}'` #Anzahl der Spalten 
08.
        while [ $ZAEHLER -le $SPALTEN ]; do #durchlaufen aller Spalten pro Zeile beginnend ab der 2ten 
09.
                LISTENVERZ=`echo $line | gawk -v PARAM="$ZAEHLER" -F';' '{print $PARAM}'` #Listernverzeichnis der aktuellen Spalte 
10.
                #echo $LISTENVERZ 
11.
                find -maxdepth 1 -type f  -name "*$MANDANT*"  -exec cp -v  \{\} /mnt/loga_app/listen/$LISTENVERZ/UVNFIN 1>>$PROTO 2>&1 \; 
12.
                ZAEHLER=$[$ZAEHLER+1] 
13.
        done 
14.
        echo "" >> $PROTO 
15.
done 
16.
 
Ist zwar nicht besonders schön aber funktioniert.

Falls jemand eine Idee hat wie man die ganze Funktionalität in awk abbildet, kann er sich ja nochmal melden.

Gruß
Kongootto
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Java
Frage zu Print When Expression im Jaspersoft Studio (2)

Frage von helmuthelmut2000 zum Thema Java ...

LAN, WAN, Wireless
gelöst HP Switches - Frage zu Spanning Tree bzw. Loop Back Protection (12)

Frage von chfran zum Thema LAN, WAN, Wireless ...

Hyper-V
Grundsatz Frage Anbindung Hyper V Hosts ans Netzwerk (7)

Frage von Eifeladmin zum Thema Hyper-V ...

Windows Netzwerk
gelöst Frage zu den Netzwerkfreigaben mit Bild (8)

Frage von M.Marz zum Thema Windows Netzwerk ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...