bildnummern umbenennen nach Regel: n->2n-1

Du suchst ein Programm für einen bestimmten Zweck?
Benutzeravatar
Meillo
Moderator
Beiträge: 5952
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: bildnummern umbenennen nach Regel: n->2n-1

Beitrag von Meillo » 16.09.2020 15:07:11

eggy hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 15:01:38
@hikaru: Meillos Lösung ist schon deswegen viel guter weil da awk drin ist
YMMD! :THX:

... dann lehne ich mich mal zurueck. ;-)
Use ed(1) once in a while!

Benutzeravatar
hikaru
Beiträge: 11143
Registriert: 09.04.2008 12:48:59

Re: bildnummern umbenennen nach Regel: n->2n-1

Beitrag von hikaru » 16.09.2020 15:17:01

eggy hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 15:01:38
@hikaru: Meillos Lösung ist schon deswegen viel guter weil da awk drin ist . so. :mrgreen:
Mir war von Anfang an klar, dass sowas kommt:
hikaru hat geschrieben: ↑ zum Beitrag ↑
10.08.2020 20:47:09
Hier kommt bestimmt noch jemand mit einer eleganten awk-Lösung um die Ecke, die im Prinzip das Gleiche macht.
eggy hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 15:01:38
(egal ob es was tut, solange das nichtstun mit awk geschieht kann es garnicht falsch sein)
Verstehe! Dann ist awk sowas wie das Gegenstück zu Perl:
Perl macht immer $irgendwas, selbst wenn beim Coden nur die Katze über die Tastatur gelaufen ist.
Da fragt sich dann, was passiert, wenn man awk und Perl kombiniert. Implodiert dann das Universum? ;)

michaa7
Beiträge: 3362
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: bildnummern umbenennen nach Regel: n->2n-1

Beitrag von michaa7 » 16.09.2020 15:44:41

eggy hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 15:01:38
...

Einfach fragen wenn was unklar ist, irgendwer (Meillo :mrgreen:) erklärts sicher gerne ausführlicher
...
hikaru hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 15:17:01
...implodiert dann das Universum? ;)
Gut, dann mache ich hier schnell weiter bevor ihr unachtsam werdet:

Natürlich stehen alle Bilder Kopf, weil Smartfon, Kamera, Stativ, Platz, Auge, Hand und Umblättern eine Vielzahl von sinnvollen, aber aber auch am Ende kopfstehende Varianten zulassen.

Und lerneifrig wie ich bin habe ich mir zusammengeschustert:

Code: Alles auswählen

ls  *.jpg | convert -rotate 180 *.jpg
(und jetzt denkt euch zusätzlich alle unsinnigen varianten für "*.jpg" aus; hätte ich die sinnvolle/richtige gefunden würde ich nicht fragen ;-) )

Also: alle fotos um 180° drehen, namen *nicht* ändern.

(Dass ich ein einzelnes bild mit convert -rotate 180 bild1.jpg bild1.jpg entsprechend drehen kann ist klar. Aber alle bilder durchzuschleußen erfodert nicht vorhandenes Wissen ;-) . Ich würde gerne grundsätzlich verstehn wie ich einen bash befehl mit einer schleife kombinieren kann. Schon daran bin ich bei meinem bashstudium gescheitert)
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)
Forumsumfrage: Welche debianartige Distribution / SubDistri nutzt du?
Und wenn ihr textet das Abstimmen im Formular nicht vergessen ...

Benutzeravatar
hikaru
Beiträge: 11143
Registriert: 09.04.2008 12:48:59

Re: bildnummern umbenennen nach Regel: n->2n-1

Beitrag von hikaru » 16.09.2020 16:01:04

Hier kommen wir zu dem Grund, warum ich es unglücklich finde, dass heinz sein Script als Einzeiler verkauft hat. Dabei geht nämlich mMn die Übersichtlichkeit für dich verloren.
Schreiben wir das "vernünftig" auf, dann sieht es so aus:

Code: Alles auswählen

seite=1
for datei in `ls -1 ./IMG_*`
do
  mv "$datei" "f-z-v-t_`printf '%03i' $seite`.jpg"
  let seite+=2
done
Wie du siehst, ist da schon eine for-Schleife enthalten. Innerhalb dieser Schleife kannst du convert prinzipiell an beliebiger Stelle einhängen. Am einfachsten wäre es, du machst das vor dem Umbenennen, weil du hier den Dateinamen schon fertig in der Variablen "$datei" hast:

Code: Alles auswählen

seite=1
for datei in `ls -1 ./IMG_*`
do
  convert -rotate 180 "$datei"
  mv "$datei" "f-z-v-t_`printf '%03i' $seite`.jpg"
  let seite+=2
done
Edit2:
Edit1 zurück. Zu viel Perl heute. ;)
Zuletzt geändert von hikaru am 16.09.2020 16:08:01, insgesamt 1-mal geändert.

Benutzeravatar
Meillo
Moderator
Beiträge: 5952
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: bildnummern umbenennen nach Regel: n->2n-1

Beitrag von Meillo » 16.09.2020 16:06:12

`convert' erzeugt eine neue Datei mit dem Bearbeitungsergebnis. In-place-Aenderungen macht man mit `mogrify'. Die beiden Befehle koennen das Gleiche nur arbeitet zweiteres eben in-place. Da geht dann sowas wie:

Code: Alles auswählen

mogrify -rotate 180 *.jpg

(Auf die anderen Seitenaeste des Themas kann ich gerade zeitlich nicht eingehen, aber in der Sache wollte ich euch nicht in der Luft haengen lassen.)
Use ed(1) once in a while!

Benutzeravatar
Meillo
Moderator
Beiträge: 5952
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: bildnummern umbenennen nach Regel: n->2n-1

Beitrag von Meillo » 16.09.2020 16:09:28

hikaru hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 16:01:04

Code: Alles auswählen

seite=1
for datei in `ls -1 ./IMG_*`
do
  convert -rotate 180 "$datei"
  mv "$datei" "f-z-v-t_`printf '%03i' $seite`.jpg"
  let seite+=2
done
So arbeitet `convert' nicht, es braucht immer Input- und Output-File. Wenn du `convert' durch `mogrify' ersetzt, dann geht es. Einfacher waere aber:

Code: Alles auswählen

for datei in `ls -1 ./IMG_*`
do
  convert -rotate 180 "$datei" "f-z-v-t_`printf '%03i' $seite`.jpg"
  let seite+=2
done
EDIT: ... wobei das :oops: Kopien erzeugt ... Ach, man sollte nicht mal schnell noch posten wollen, wenn man eigentlich keine Zeit hat. :facepalm:



(Btw: Das `-1' bei `ls' ist nicht noetig. Wenn die Ausgabe nicht auf's Terminal geht, sondern in einen anderen Befehl verhaelt sich `ls' automatisch wie `ls -1'.)
Use ed(1) once in a while!

michaa7
Beiträge: 3362
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: bildnummern umbenennen nach Regel: n->2n-1

Beitrag von michaa7 » 16.09.2020 16:26:00

Meillo hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 16:06:12
`convert' erzeugt eine neue Datei mit dem Bearbeitungsergebnis. In-place-Aenderungen macht man mit `mogrify'. Die beiden Befehle koennen das Gleiche nur arbeitet zweiteres eben in-place. Da geht dann sowas wie:

Code: Alles auswählen

mogrify -rotate 180 *.jpg

(Auf die anderen Seitenaeste des Themas kann ich gerade zeitlich nicht eingehen, aber in der Sache wollte ich euch nicht in der Luft haengen lassen.)
Das tut es perfekt. Danke.

Die Schleifenvariante werde ich mir für das Schleifenstudium vornehmen. Danke auch dafür.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)
Forumsumfrage: Welche debianartige Distribution / SubDistri nutzt du?
Und wenn ihr textet das Abstimmen im Formular nicht vergessen ...

eggy
Beiträge: 2284
Registriert: 10.05.2008 11:23:50

Re: bildnummern umbenennen nach Regel: n->2n-1

Beitrag von eggy » 16.09.2020 16:47:47

Meillo hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 16:06:12
Die beiden Befehle koennen das Gleiche nur arbeitet zweiteres eben in-place.
@Meillo: fast

Code: Alles auswählen

diff convert.c  mogrify.c   |wc
   8073   22177  298058
mogrify kennt z.B. kein --help

</klugscheissmodus>

Aber ja, in den meisten Fällen kanns das gleiche, nen paar Optionen machen inplace vermutlich keinen Sinn, und wenn ich es richtig in Erinnerung hab, gab es minimale Unterschiede in irgendwelchen super speziellen Sonderfällen, wo man das eine und nicht das andere nehmen musste, aber frag nicht was das war, ist schon ewig her

Und keine Sorge, wir hätten das auch gewusst - Du warst nur mal wieder schneller :mrgreen:

@hikaru: awk-perl-Katzen man könnte noch versuchen Butterbrote einzubauen

michaa7
Beiträge: 3362
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: bildnummern umbenennen nach Regel: n->2n-1

Beitrag von michaa7 » 16.09.2020 17:49:36

So, nun ist das Thema gegessen:

Habe eben die gradzahligen Seiten abfotografiert. Ging mit Seite 2 los, den Umschlag hatte ich schon gestern per Hand angepasst. Kleiner Stolperstein: Heute von hinten fotografiert, war umblättertechnisch am einfachsten. Schlau wie ich dank euch nun bin führte das zu folgender Befehlszeile:
seite=2;for datei in `ls -r -1 ./IMG_*`;do mv "$datei" "titel_`printf '%03i' $seite`.jpg";let seite+=2;done
DONE!

Thanks.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)
Forumsumfrage: Welche debianartige Distribution / SubDistri nutzt du?
Und wenn ihr textet das Abstimmen im Formular nicht vergessen ...

Benutzeravatar
Meillo
Moderator
Beiträge: 5952
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: bildnummern umbenennen nach Regel: n->2n-1

Beitrag von Meillo » 16.09.2020 22:27:08

eggy hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 16:47:47
Meillo hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 16:06:12
Die beiden Befehle koennen das Gleiche nur arbeitet zweiteres eben in-place.
@Meillo: fast

Code: Alles auswählen

diff convert.c  mogrify.c   |wc
   8073   22177  298058
mogrify kennt z.B. kein --help

</klugscheissmodus>
Die Option `--help' ist allerdings auch nur ein undokumentiertes Gimmick. Bei Imagemagick haben alle Optionen nur ein Minuszeichen, also `-help' und `-version', die beide in der Manpage stehen und bei beiden Programmen funktionieren. ;-)

Aber ja, in den meisten Fällen kanns das gleiche, nen paar Optionen machen inplace vermutlich keinen Sinn, und wenn ich es richtig in Erinnerung hab, gab es minimale Unterschiede in irgendwelchen super speziellen Sonderfällen, wo man das eine und nicht das andere nehmen musste, aber frag nicht was das war, ist schon ewig her
Mit `mogrify' kann man das Dateiformat nicht aendern, mit `convert' schon. Das ist wohl der wichtigste Fall. Darueber hinaus kann man bei `convert' getrennte Input- und Output-Optionen haben, z.B. `-density', das IIRC dafuer verwendet werden kann, eine Input-Vektor-Datei gewuenscht genau zu rastern, was dann aber unabhaengig davon ist, wie die Ausgabe-Datei gerastert ist. (Ich meine mich zu erinnern, dass ich das verwendet habe, um PDFs ins PNGs zu konvertieren. Die waren immer zu verpixelt. Die Output-Aufloesung hochzufahren hat nichts gebracht, aber die Input-Density anzupassen schon. So oder so aehnlich war das.) All dies kann `mogrify' nicht. Insgesamt ist `convert' maechtiger, aber `mogrify' ist bequemer wenn man viele Dateien in-place einfach bearbeiten will.

Und keine Sorge, wir hätten das auch gewusst - Du warst nur mal wieder schneller :mrgreen:
Ich versuche, euch das naechste Mal mehr Zeit zu geben. ;-)
Use ed(1) once in a while!

Benutzeravatar
Meillo
Moderator
Beiträge: 5952
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: bildnummern umbenennen nach Regel: n->2n-1

Beitrag von Meillo » 16.09.2020 22:41:30

michaa7 hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 15:44:41
Und lerneifrig wie ich bin habe ich mir zusammengeschustert:

Code: Alles auswählen

ls  *.jpg | convert -rotate 180 *.jpg
Befehle koennen zwei Arten von Input nutzen:
1) Kommandozeilenargumente
2) Standardinput

Ersteres sind Woerter, die du hinter den Befehl schreibst (hier: ``-rotate'', ``180'', und alle Dateinamen die die Shell aus ``*.jpg'' expandiert hat).

Zweiteres ist Text, der entweder aus einer Pipe kommt (hier: die Ausgabe von `ls *.jpg'), oder der Inhalt einer Datei, die mit einer Eingabeumleitung `<dateiname' angegeben worden ist, oder ein Here-Dokument (<<MARKER).

Welche Befehle was davon in welcher Weise verarbeiten ist unterschiedlich.

`convert' beispielsweise nimmt die Dateinamen nur als Kommandozeilenargumente entgegen. Standard-Input verarbeitet es gar nicht, ausser der Dateiname im Argument lautet `-', dann wird statt einer per Pfad angegebenen Datei der Dateiinhalt aus Stdin gelesen. (Das machen viele Programme so.)

Die meisten Text-Utilities (grep, wc, cut, ...) lesen die Dateiargumente, oder Stdin wenn keine angegeben sind.

Wenn du dies verstehen willst, dann spiele mit kleinen Textdateien und den Text-Utilities rum. Lerne beispielsweise den Unterschied der beiden Befehle zu erklaeren:

Code: Alles auswählen

:-Q wc *
    827    3344  136119 a
    603    2763   70941 b
    881    5830  303794 c
   8282   36429 1845521 d
  10593   48366 2356375 total

:-Q cat *|wc
  10593   48364 2356375
Wenn es dir wichtig ist, dann eroeffne gerne einen Thread zu dem Thema. Hilfe und Erklaerungen findest du hier problemlos, wenn wir merken, dass du selber auch Zeit reinsteckst.

... oder lass dir weiterhin fertige Ketchup-Loesungen von uns bauen. Wenn die Probleme einfach und spassig sind, bekommst du die frei Haus. :-)
Use ed(1) once in a while!

Benutzeravatar
Meillo
Moderator
Beiträge: 5952
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: bildnummern umbenennen nach Regel: n->2n-1

Beitrag von Meillo » 16.09.2020 23:01:08

hikaru hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 10:44:34
Meillo hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 07:59:57
- Mein Befehl ist besser lesbar (awk-Kenntnisse vorausgesetzt), weil er kuerzer ist und weniger Noise enthaelt. Er besteht nur aus den relevanten Komponenten: die relevanten Dateien, printf, Formatstring fuer den mv-Befehl, bisheriger Dateiname, Nummer des neuen Dateinamens (genau so notiert wie michaa7 das im Threadtitel gemacht hat), sh zur Durchfuehrung. Alles in der Reihenfolge, man muss beim Lesen nicht vor und zurueck springen. (Schwierig sind lediglich `$1' (was `$0' heissen sollte) und `NR' in awk, fuer awk-Programmierer gehoeren die aber zum Standard-Repertoire.)
... das hier aber nicht. Und ich glaube nicht, dass das an meinen mangelnden awk-Kenntnissen liegt.
Im Detail:
1. Kürze um der Kürze willen sehe ich nicht als Zeichen für Codequalität.
Der Meinung bin ich auch.
2. Wenn du sagst, dass dein Befehl weniger Noise enthält, dann müsstest du den Noise in heinz' Befehl ("irrelevante Komponenten"?) benennen können. Ich sehe keinen.
Leider ist die Frage von Signal und Noise stark vorwissen- und gewohnheitsabhaengig. Ist also `seite = seite + 2' mehr Noise als `seite += 2'? Das zweite Statement sagt kompakter das gleiche aus, also hat es, bei gleichem Signal, weniger Noise. Die Rechnung funktioniert aber nur wenn dem Codeleser beides gleichermassen bekannt und verstaendlich ist.

Noise kann man reduzieren, wenn man mehr implizite Funktionen der Programmiersprache nutzt, statt die Dinge von Hand zu machen. Darum hat C beispielsweise recht viel Noise. Statt `"foo" + "bar"' muss man dort snprintf(3) und was weiss ich verwenden, Memorymanagement machen, usw. Beides hat die gleiche Aussagekraft, aber im ersten Fall macht die Programmiersprache das Memorymanagement implizit fuer einen. Darum hat der Programmierer weniger Noise in seiner Wahrnehmung.

Ebenso nun hier. In awk spart man sich das Verwalten der Seitennummer, sie muss nicht initialisiert und nicht inkrementiert werden. Stattdessen nutzt man den implizit gefuehrten (vereinfacht gesagt) Zeilenzaehler `NR' (= Number of Record) und wendet darauf eine Funktion (NR*2-1) an. Wie im obigen Beispiel enthaelt der Code auch weniger Noise, weil mehr Logik in den impliziten Bereich verlagert worden ist.

Weniger Noise ist nur dann schlechter, wenn man die impliziten Vorgaenge nicht kennt. Als Anfaenger ist diese Art von Noise ein wichtiges Hilfsmittel, um ueberhaupt zu verstehen was passiert. Da braucht's den einen oder anderen ``Erklaerungssatz'' und mehr Explizites. Je weiter man fortschreitet, desto mehr Implizites will man haben, weil das den ganzen unwichtigen Teil aus dem Blickfeld entfernt, so dass nur noch das Relevante und Interessante uebrig bleibt.

Konkret kann man bei heinz' Umsetzung zwei Dinge als mehr Noise sehen: Die explizite Verwaltung von $seite und die explizite Schleife. Die zwei Dinge passieren in meiner awk-Umsetzung impliziter.

Noise ist es halt nur dann, wenn man es zum Verstaendnis nicht braucht. Du brauchst es zum Verstaendnis, ich nicht; darum ist es fuer dich Hilfsmittel, fuer mich aber Noise. Ich habe wohl zu sehr aus meiner Perspektive betrachtet. :roll:

3. Dass man bei deiner Lösung beim Lesen nicht vor und zurückspringen mus stimmt nicht, denn man muss zumindest die Einsetzungen bei printf machen.
Akzeptiert.
4. $1/$0 und NR: Mag sein, dass das Standardrepertoire von awk ist. Zumindest Ersteres ist auch ohne awk-Kenntnisse Programmierer-Allgemeinwissen. Aber für NR braucht man dann wirklich spezifische Kenntnisse. Das Äquivalent dazu in heinz' Lösung ist das "let". Mag sein, dass das mein Bias ist, aber ich finde das zumindest nicht fordernder als awks NR. Die Funktion von beiden erschließt sich für Unwissende aus dem Aufgabenkontext.
Was du hier schreibst entspricht dem was ich oben schreibe -- es ist vorwissen- und gewohnheitsabhaengig. Da jeder anderes Vorwissen hat und Unterschiedliches gewohnt ist, kommt man zu unterschiedlichen Ergebnissen.


Im Uebrigen ist es lustig, dass du Perl programmierst, denn da ist ja die Koenigssprache der impliziten Allmaechtigkeit. :-D
Use ed(1) once in a while!

Benutzeravatar
Meillo
Moderator
Beiträge: 5952
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: bildnummern umbenennen nach Regel: n->2n-1

Beitrag von Meillo » 17.09.2020 09:40:33

michaa7 hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 17:49:36
Habe eben die gradzahligen Seiten abfotografiert. Ging mit Seite 2 los, den Umschlag hatte ich schon gestern per Hand angepasst. Kleiner Stolperstein: Heute von hinten fotografiert, war umblättertechnisch am einfachsten. Schlau wie ich dank euch nun bin führte das zu folgender Befehlszeile:
seite=2;for datei in `ls -r -1 ./IMG_*`;do mv "$datei" "titel_`printf '%03i' $seite`.jpg";let seite+=2;done
:THX:
Use ed(1) once in a while!

Benutzeravatar
hikaru
Beiträge: 11143
Registriert: 09.04.2008 12:48:59

Re: bildnummern umbenennen nach Regel: n->2n-1

Beitrag von hikaru » 17.09.2020 11:28:33

Meillo hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 16:09:28
So arbeitet `convert' nicht, es braucht immer Input- und Output-File. Wenn du `convert' durch `mogrify' ersetzt, dann geht es.
Danke!
Meillo hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 16:09:28
Ach, man sollte nicht mal schnell noch posten wollen, wenn man eigentlich keine Zeit hat. :facepalm:
:mrgreen:

Meillo hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 23:01:08
Leider ist die Frage von Signal und Noise stark vorwissen- und gewohnheitsabhaengig. Ist also `seite = seite + 2' mehr Noise als `seite += 2'? Das zweite Statement sagt kompakter das gleiche aus, also hat es, bei gleichem Signal, weniger Noise. Die Rechnung funktioniert aber nur wenn dem Codeleser beides gleichermassen bekannt und verstaendlich ist.
Ich glaube, wir haben hier unterschiedliche Definitionen von "Noise". Für mich ist dein Beispiel kein Noise, denn es wird ja dabei nichts Unnötiges gemacht. Es wird lediglich die Notation länger, was ich nicht als Nachteil sehe.
Wenn ich dich richtig verstehe, müsste selbst der Variablenname in seiner Länge Noise enthalten, denn ein Buchsstabe reicht ja auch. In Perl treibt man sowas gern mit anonymen Variablen auf die Spitze, was ich persönlich fürchterlich finde.
Meillo hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 16:09:28
Noise kann man reduzieren, wenn man mehr implizite Funktionen der Programmiersprache nutzt, statt die Dinge von Hand zu machen. Darum hat C beispielsweise recht viel Noise. Statt `"foo" + "bar"' muss man dort snprintf(3) und was weiss ich verwenden, Memorymanagement machen, usw. Beides hat die gleiche Aussagekraft, aber im ersten Fall macht die Programmiersprache das Memorymanagement implizit fuer einen. Darum hat der Programmierer weniger Noise in seiner Wahrnehmung.
Hier gehe ich mit. Um es mal mit einem IT-fremden Vergleich zu verdeutlichen:
C ist so, als würde man in einer Kochshow nicht nur die Zubereitung des Gerichts demonstrieren, sondern auch den vorangegangenen Einkauf und das anschließende Putzen der Küche. Das sehe auch ich als Noise. Streng genommen dürte man dann auch nicht auf so populäre Tricks wie "wir haben das schon mal vorbereitet" zurückgreifen, denn die "passive Zubereitungszeit" zu komprimieren ist eine implizite Funktion der Kochshow.
Meillo hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 16:09:28
Ebenso nun hier. In awk spart man sich das Verwalten der Seitennummer, sie muss nicht initialisiert und nicht inkrementiert werden. Stattdessen nutzt man den implizit gefuehrten (vereinfacht gesagt) Zeilenzaehler `NR' (= Number of Record) und wendet darauf eine Funktion (NR*2-1) an. Wie im obigen Beispiel enthaelt der Code auch weniger Noise, weil mehr Logik in den impliziten Bereich verlagert worden ist.
Dieses Verlagern in implizite Funktionen geht aber nur mit awk-spezifischem Spezialwissen und gehört in meinen Augen nicht zum Thema "Bilder umbenennen". Daher sollte das auch kein Kriterium zur Bewertung des eigentlichen Themas sein, sondern nur in die B-Note für die Beherrschung des gewählten Lösungswegs eingehen.
Meillo hat geschrieben: ↑ zum Beitrag ↑
16.09.2020 16:09:28
Im Uebrigen ist es lustig, dass du Perl programmierst, denn da ist ja die Koenigssprache der impliziten Allmaechtigkeit. :-D
Ich mache das nicht freiwillig. Ich bin nicht mal ein guter Programmierer. Im Grunde bin ich eher ein Exemplar für das Sprichwort: "Beware of programmers carrying screwdrivers!" ;)

Antworten