Dateinamen in variable ausgeben.

Z

ZSchneidi

Grünschnabel
Hallo Leute, bin brandneu hier bei euch.
Hab vor 2 Wochen meine Ausbildung zum Anwendungsentwickler angefangen.
Nur so als info am Rande ; )

Ich habe jetz mit awk shell script angefangen, sind übrigens meine ersten gehversuche mit derartigem. Dementsprechend bin ich noch nicht so fitt.

Ich bin momentan dabei ein script zu schreiben, das mir eine Log datei liest, formatiert und danach sortierte werte im HTML Format auswirft. Soweit bin ich schon ganz zufrieden damit.

PROBLEM:

Ich wollte jetzt in der Überschrift den Dateinamen angeben, aber nicht als vorgegebenen Text, sondern als Variable. Damit ich das script, welches ich als datei anlege (nicht in Kommandozeile), auch auf weitere Log's anwenden kann.

Wie kann ich mir jetz den Namen der Datei, die ich bearbeite ich eine Variable ausgeben lassen, um diese in der Überschrift mit auszugeben ?

Wäre schön, wenn ihr mir nen Tip geben könntet und denkt dran ich bin noch kein scriptvirtuose ; )

Dank euch.
 
wie kommt denn dein script an den namen der zu bearbeitenden datei?
wird der name bei script-start übergeben?
dann vielleicht:
Code:
echo "Überschrift = Dateiname = "$1""
 
Hey, gute Frage, sorry hatte vergessen, das noch zu erwähnen.
Derzeit übergebe ich die Zieldatei immer noch in der Kommandozeile.

Da ich noch nicht weiß, wie ich das ins script direkt mit einbau.
Wäre aber dankbar für einen Tipp, wie ich das machen könnt.
 
Sorry zur Originalfrage kann ich rel. wenig beitragen. Aber für sowas habe ich früher immer PERL benutzt. (PERL ist eine richtige Programmiersprache und die Abkürzung steht für Practical Extraction and Report Language (zweckmäßige Extraktions- und Berichtssprache) oder Pathologically Eclectic Rubbish Lister (krankhaft stilmischender Blödsinnsauflister))

(Ausgeschriebene Abkürzung von Wikipedia)
 
Ja Perl wollt ich nur noch nicht weiter angehen, wollte mich erstmal nur mit awk beschäftigen. weiteres kommt bei bedarf, bisher hat auch alles soweit geklappt. Aber das wäre jetz noch ne sehr interessante Sache, damit ich damit erstmal weiter komm.
 
Frage nicht verstanden ....
 
Zuletzt bearbeitet:
hmm die Frage könntest du verstanden haben, ich komm nur mit der Antwort nicht ganz klar. Ich habs mal durchprobiert.

Mit dem sh spuckt der mir line für line nur "command not found".

Ich kann jetz mit der Art das schript aufzurufen nicht klar.
Ich mach es sonst via:

awk -f "script.name" "Zieldatei"

Wie würde das in der Kommandozeile aussehen, wenn ich es mach wie du? Meine shell kann damit nicht viel anfangen.
 
Mir wurde noch der Tip gegeben, es mit "argv" zu versuchen. könntet ihr mir damit helfen ?
Das hab ich auch noch nicht so recht drauf.
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Ohh oh, schon der dritte Post in Folge.. nicht schlagen...

Ich denke ich habs jetz soweit.
Falls es interessiert.

Code:
BEGIN {
        for (i = 0; i < ARGC; i++)
        datei=ARGV[1]

        print datei
        print "Der dateiname lautet " datei".";

}

Der auswurf entspricht dann dem, was ich wollte, dass ich den Dateinamen ins script integriert hab, muss dabei allerdings an fester stelle in der Kommandozeile stehen.

Wenn euch da jetz was stört, dann sagt es mir bitten, ich lerne immernoch.
Und wenn ich was einfacher oder richtiger machen könnte, lasst es mich wissen.
 
Zuletzt bearbeitet:
Irgendwie kann ich dir wohl nicht ganz folgen.

Wozu die Zählschleife?
Bei 10 Dateien, gibst du hier 10 x das gleiche Array-Element (1) aus.:think:

Als Denkanstoß mal einen kleinen Auszug aus man awk:
Built-in Variables
...
FILENAME The name of the current input file. If no files are specified on the command line, the value of
FILENAME is “-”. However, FILENAME is undefined inside the BEGIN block (unless set by getline).

Ich hoffe das ist das was du suchst.

Gruß Wolfgang
 
Hmm, ich hielt das erstmal für ok, da es zumindest genau das ausgeworfen hat, was ich wollte.

Inwiefern, wäre das jetz schlecht, wenn ich 10 Datein im Ziel hab und er mir 10 mal dieses Element ausgibt ? Könnte das zu Problemen führen ?

Du kennst dich sicher besser aus damit, ich werd mich morgen mal an die manpage setzen und deinen Tip mal durchgehen.

Dank dir erstmal.
 
Hmm ok, also soweit ich glaube, das jetz zu verstehen, ist FILENAME eine Variable, die den "Dateinamen" bereits enthält, sobald die Zieldatei eingelesen wird.

Nur ich bekomm es nicht hin, mir den Inhalt von FILENAME ausgeben zu lassen.

Könntet ihr mir ein Beispiel geben, wie der Syntax auszusehen hat ?
 
Zurück
Oben