Hilfe ich verstehe das AWK Programm nicht

Alex Krug - Donnerstag, 09. Februar 2017 10:04:17 - 3 Antworten

Hallo Liebe Linux Community,

im zuge meiner Arbeit bin ich auf dieses AWK Programm gekommen. Leider sind meine Kenntnisse diesbezüglich sehr gering. Vielleicht kann mir hier jemand erklären was es das programm genau macht ? Was AWK an sich tut ist mir bekannt happy
Programm:
if test -s $1
then awk -F# ' # -F = Trennzeichen "#"
{
if (prev1==""blunk
{ s19=0
s24=0
x = sprintf("%s",$7)
x1= sprintf("%s",$35)
x2= sprintf("%s",$36)
x3= sprintf("%s",$13)
x4= sprintf("%s",$33)
x5= sprintf("%s",$11)
prev1 =$1 ; prev2 =$2 ; prev3 =$3 ; prev4 =$4 ; prev5 =$5
prev6 =$6 ; prev7 =$7 ; prev8 =$8 ; prev9 =$9 ; prev10=$10
prev11=$11 ; prev12=$12 ; prev13=$13 ; prev14=$14 ; prev15=$15
prev16=$16 ; prev17=$17 ; prev18=$18 ; prev19=$19 ; prev20=$20
prev21=$21 ; prev22=$22 ; prev23=$23 ; prev24=$24 ; prev25=$25
prev26=$26 ; prev27=$27 ; prev28=$28 ; prev29=$29 ; prev30=$30
prev31=$31 ; prev32=$32 ; prev33=$33 ; prev34=$34 ; prev35=$35
prev36=$36 ; prev37=$37 ; prev38=$38 ; prev39=$39 ; prev40=$40
prev41=$41 ; prev42=$42 ; prev43=$43 ; prev44=$44 ; prev45=$45
prev46=$46 ; prev47=$47 ; prev48=$48
}
if ($1!=prev1 || $2!=prev2 || $3!=prev3 || $16!=prev16 || $4!=prev4 || $39!=prev39 || $9!=prev9 || $31!=prev31 || $12!=prev12 || $5!=prev5 || $40!=prev40 || $41!=prev41 )
{ printf "%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%.2f#%.2f#%.2f#%.2f#%.2f#%.2f#%.2f#%.2f#%.2f#%.2f#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%.2f#%.2f#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#\n",prev1,prev2,prev3,prev4,prev5,prev6,x,prev8,prev9,prev10,x5,prev12,x3,prev14,prev15,prev16,prev17,prev18,s19,prev20,prev21,prev22,prev23,s24,prev25,prev26,prev27,prev28,prev29,prev30,prev31,prev32,x4,prev34,x1,x2,prev37,prev38,prev39,prev40,prev41,prev42,prev43,prev44,prev45,prev46,prev47,prev48
prev1 =$1 ; prev2 =$2 ; prev3 =$3 ; prev4 =$4 ; prev5 =$5
prev6 =$6 ; prev7 =$7 ; prev8 =$8 ; prev9 =$9 ; prev10=$10
prev11=$11 ; prev12=$12 ; prev13=$13 ; prev14=$14 ; prev15=$15
prev16=$16 ; prev17=$17 ; prev18=$18 ; prev19=$19 ; prev20=$20
prev21=$21 ; prev22=$22 ; prev23=$23 ; prev24=$24 ; prev25=$25
prev26=$26 ; prev27=$27 ; prev28=$28 ; prev29=$29 ; prev30=$30
prev31=$31 ; prev32=$32 ; prev33=$33 ; prev34=$34 ; prev35=$35
prev36=$36 ; prev37=$37 ; prev38=$38 ; prev39=$39 ; prev40=$40
prev41=$41 ; prev42=$42 ; prev43=$43 ; prev44=$44 ; prev45=$45
prev46=$46 ; prev47=$47 ; prev48=$48
s19=0
s24=0
x = sprintf("%s",$7)
x1= sprintf("%s",$35)
x2= sprintf("%s",$36)
x3= sprintf("%s",$13)
x4= sprintf("%s",$33)
x5= sprintf("%s",$11)
}
s19+=$19
s24+=$24
if ($7 != prev7)
{
x = sprintf("%s%s",x,$7)
x1= sprintf("%s%s",x1,$35)
x4= sprintf("%s%s",x4,$33)
x5= sprintf("%s%s",x5,$11)
prev7=$7
}
if ($13 != prev13)
{
x3= sprintf("%s%s",x3,$13)
prev13=$13
}
if ($36 != prev36)
{
x2= sprintf("%s%s",x2,$36)
prev36=$36
}
}
END { printf "%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%.2f#%.2f#%.2f#%.2f#%.2f#%.2f#%.2f#%.2f#%.2f#%.2f#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%.2f#%.2f#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#\n",prev1,prev2,prev3,prev4,prev5,prev6,x,prev8,prev9,prev10,x5,prev12,x3,prev14,prev15,prev16,prev17,prev18,s19,prev20,prev21,prev22,prev23,s24,prev25,prev26,prev27,prev28,prev29,prev30,prev31,prev32,x4,prev34,x1,x2,prev37,prev38,prev39,prev40,prev41,prev42,prev43,prev44,prev45,prev46,prev47,prev48
} ' $1
fi

Ich würde mich über jetweilige Hilfe freuen !

Gruß
Alex

Antworten
awk
hha4491 (unangemeldet), Dienstag, 14. Februar 2017 15:19:01
Ein/Ausklappen

Hallo Alex,
awk ist ein Programm zur Mustererkennun/Textbearbeitung. Vor dem, was Du geschickt hast, müßten noch Lesebefehle wie cat, read stehen. Sonst könnte man $1 usw., nicht auswerten.
awk -F# legt + als Feldtrenner fest.
Es wäre nicht schlecht, eiune Beispiueldatei zu haben.


Bewertung: 201 Punkte bei 30 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: awk
hha4491 (unangemeldet), Dienstag, 14. Februar 2017 16:28:49
Ein/Ausklappen

Ich meinte #,nicht +


Bewertung: 225 Punkte bei 25 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: awk
hha4491 (unangemeldet), Mittwoch, 15. Februar 2017 17:08:02
Ein/Ausklappen

Hier steht einiges über awk:
https://wiki.ubuntuusers.de/awk/
https://www-user.tu-chemnit..._linux_werkzeugkasten/awk.html
https://www.clug.de/vortraege/awk/


Bewertung: 201 Punkte bei 24 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Ähnliche Artikel

  • The Answer Girl
    Kaum installiert, schon wieder veraltet? Ein FreeBSD-Upgrade ist nicht schwer, vorausgesetzt, man lässt sich vom kleinen Dämonen nicht ins Bockshorn jagen. Mit frisch aktualisierter Software gehen die ersten Schritte auf dem etwas anderen freien Betriebssystem gleich viel leichter von der Hand.
  • Internet
    Jeden Tag werden die Kosten für den Online Zugang gesenkt. Damit lohnt es sich für immer mehr Menschen im Internet zu surfen. Denn nirgends findet man heute schneller die Nachrichten und Informationen, die für einen wichtig sind. Für viele Linux-Anwender ist das Austauschen von News oder das Recherchieren nach neuen Programmversionen schon lange Alltag.
  • deskTOPia: wmi
    Viele Fenstermanager lassen sich heutzutage fast ausschließlich per Maus bedienen – die Tastatur fristet ein Schattendasein. WMI zeigt, dass es auch anders geht.
  • man und info
    Schnell eine Befehlsoption nachschauen, einfach stöbern, was ein Kommando sonst noch alles kann, oder ausführliche Hilfetexte lesen mit Querverweisen – mit man und info bleiben Sie im Bilde.
  • Aktuelle Software im Kurztest
    Als umfangreiche IDE für alle, die primär in C, Perl, PHP oder HTML entwickeln, bietet <s>Griffon 1.6.0<s> zahlreiche Einstellungen und viele Funktionen, die man sonst nur von größeren Lösungen kennt.Als einfache, aber nützliche Oberfläche für den Webseiten-Kopierer HTTrack fasst <s>Httraqt 1.1.0<s> dessen wichtigste Einstellungen in einer komfortablen, intuitiv bedienbaren Oberfläche zusammen.Die Zahl der von Linux unterstützten Archiv- und Kompressionsformate wird immer umfangreicher. <s>Peazip 5.0<s> erspart die Mühe, hier mit zahlreichen Kommandozeilenprogrammen jonglieren zu müssen.Organisieren Sie Ihre Musiksammlung in Verzeichnissen, dann ist <s>Pogo 0.8.2<s> das Richtige für Sie. Es bietet eine einfache Bedienung, und Sie können im Handumdrehen ganze Alben in die Wiedergabeliste übernehmen.

Aktuelle Fragen

Samsung VG-KBD1500 - Bluetooth-Tastatur mit Touchpad mit Xubuntu 16.04.2 LTS
Linux- & BSD-UserGroup im Weserbergland, 16.08.2017 19:16, 0 Antworten
Bin grad mit "meinem Latein am Ende" darum hier mal so in den Raum geworfen. Samsung VG-KBD1500 -...
Tails verbindet nicht mit WLan
Georg Vogel, 30.07.2017 15:06, 5 Antworten
Hallo zusammen! Habe mir von Linux Mint aus einen Tails USB-Stick erstellt. Läuft soweit gut,...
Genivi for Raspberry Pi 3
Sebastian Ortmanns, 28.07.2017 10:37, 1 Antworten
I try to build a Genivi Development Platform for Rasberry Pi 3. But I always get the failures bel...
Bash awk Verständnis-Frage
Josef Federl, 22.07.2017 17:46, 2 Antworten
#!/bin/bash # Skriptdateiname = test.sh spaltennummer=10 wert=zehner awk '{ $'$spaltennummer'...
Bash - verschachtelte Variablenersetzung, das geht doch eleganter als meine Lösung?
Josef Federl, 18.07.2017 20:24, 3 Antworten
#!/bin/bash #Ziel des Skriptes wird sein die ID zu extrahieren hier nur als Consolentest: root@...

Jetzt auf den Mailinglisten

Re: [EasyLinux-Ubuntu] Internet Geschwindigkeit
Udo Teichmann, 19.08.2017 15:49
Am Samstag, den 05.08.2017, 18:20 +0200 schrieb Udo Teichmann: Liebe fleißige Helfer Vielen Dank für den Ti...
[EasyLinux-Ubuntu] Notebook wacht nicht mehr auf
Gerhard Blaschke, 19.08.2017 15:04
Hallo Liste, habe hier ein Notebook Acer Extensa 5630 mit Wheezy. Testweise habe ich es in den Ruhezustand...
Re: [EasyLinux-Ubuntu] bash Leerzeichen vor dem Curser
Uwe Herrmuth, 18.08.2017 08:52
Hallo Volker, Volker schrieb am 18.08.2017 um 07:33: > volker@volker-Aspire-E5-575:~$ echo $PWD &&am...
Re: [EasyLinux-Ubuntu] bash Leerzeichen vor dem Curser
Volker Borst, 18.08.2017 07:33
Hallo Uwe, Am 16.08.2017 um 21:56 schrieb Uwe Herrmuth: > > Dann hab ich eine ganz gewagte Vermutu...
Re: [EasyLinux-Ubuntu] bash Leerzeichen vor dem Curser
Uwe Herrmuth, 16.08.2017 21:56
Hallo Volker, Volker Borst schrieb am 16.08.2017 um 19:22: > > echo $PS1 > > ${debian_chr...