Scripting Contest

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Scripting Contest

Beitrag von eggy » 27.05.2018 20:57:33

Kürzer aber wahrscheinlich auch nicht besser:

Code: Alles auswählen

library(ggplot2)
data = file.info(list.files(path="/tmp",full.names=TRUE))[1]
ausgabe <- ggplot(data, aes(x = size))  + geom_histogram( bins = 10)
ausgabe
für hübsch hässlich bunt und mit Farbe siehts dann so aus

Code: Alles auswählen

library(ggplot2)
path = "/var/"
bins = 20 
data= file.info(list.files(path=path,full.names=TRUE))[1]
ausgabe <- ggplot(data, aes(x = size))  + geom_histogram( bins = bins,  colour = "blue", fill = "#56B4E9") + 
         scale_y_continuous(name = "ungefähr so viele") + 
         scale_x_continuous(name = "und vielleicht so gross") +
         theme(axis.line = element_line(size=1, colour = "black"),
               panel.grid.major = element_blank(),
               panel.grid.minor = element_blank(),
               panel.border = element_blank(),
               panel.background = element_blank(),
               plot.title=element_text(size = 20, family="humor sans"),
               text=element_text(size = 26, family="humor sans"),
               axis.text.x=element_text(colour="black", size = 12),
               axis.text.y=element_text(colour="black", size = 12)) +
        ggtitle(paste("Dateien wo rumliegen in " , path, sep="") ) +
        scale_fill_gradient("Count", low = "blue", high = "red")
ausgabe
edit: sollt man evtl dazuschreiben: das ist Code für R

Benutzeravatar
TRex
Moderator
Beiträge: 8038
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: Scripting Contest

Beitrag von TRex » 27.05.2018 21:17:32

Der Vollständigkeit halber das, was ich als Lösung adoptiert habe:

leicht abgewandelt von https://superuser.com/questions/565443/ ... and-prompt

Code: Alles auswählen

du -bs ${1:-.}/*                                                         \
 | awk '{ n=int(log($1)/log(2));                                         \
          if (n<10) n=10;                                                \
          size[n]++ }                                                    \
      END { for (i in size) printf("%d %d\n", 2^i, size[i]) }'           \
 | sort -n                                                               \
 | awk 'function human(x) { x[1]/=1024;                                  \
                            if (x[1]>=1024) { x[2]++;                    \
                                              human(x) } }               \
        { a[1]=$1;                                                       \
          a[2]=0;                                                        \
          human(a);                                                      \
          printf("%3d%s: %6d\n", a[1],substr("kMGTEPYZ",a[2]+1,1),$2) }'
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

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

Re: Scripting Contest

Beitrag von Meillo » 27.05.2018 22:17:39

Zu TRex' Loesung:

Da haette ich wohl besser in Mathe aufpassen muessen, dann haette ich naemlich gewusst, dass ich statt meinem getpow() auch diesen Ausdruck verwenden haette koennen: int(log(n)/log(2)) :roll:

Meine stars()-Funktion uebernimmt nur die Darstellung als Balken statt als Zahl, was die TRex'sche Loesung nicht macht.

Das zusaetzliche `sort -n' ist noetig, weil in awk Arrays immer assoziativ und damit ungeordnet sind. Um das zu vermeiden musste ich `maxe' einfuehren.

Btw: Die Formatierung von dem Code ist ja abgefahren ... Das sieht mir schon mehr nach Optik a la IOCCC denn nach Lesbarkeit aus. Aber der Code hat einiges Gute, das ich aufgreifen sollte.



@eggy: Clever, fuer diese Aufgabe R zu nehmen!
Use ed once in a while!

TomL

Re: Scripting Contest

Beitrag von TomL » 27.05.2018 22:37:46

Meillo hat geschrieben: ↑ zum Beitrag ↑
27.05.2018 22:17:39
Btw: Die Formatierung von dem Code ist ja abgefahren ...
Nicht nur das.. ich find das insgesamt total abgefahren .... und ich gestehe, dass das meine Fähigkeiten sowas überhaupt zu entwickeln ein wenig übersteigt. Allerdings lief es bei mir nicht und ich war mal neugierig auf die Ursache.

1. Problem:

Code: Alles auswählen

du -bs ${1:-.}/* 
du: Warnung: Zusammenfassen widerspricht --max-depth=1
„du --help“ liefert weitere Informationen.
2. Problem (Auszugsweise nur einige dieser "Fehler"):

Code: Alles auswählen

du -b --max-depth=0 ${1:-.}/*
du: Zugriff auf './proc/194/task/194/fd/3' nicht möglich: Datei oder Verzeichnis nicht gefunden
du: Zugriff auf './proc/194/task/194/fdinfo/3' nicht möglich: Datei oder Verzeichnis nicht gefunden
du: Zugriff auf './proc/194/fd/3' nicht möglich: Datei oder Verzeichnis nicht gefunden
du: Zugriff auf './proc/194/fdinfo/3' nicht möglich: Datei oder Verzeichnis nicht gefunden
Mit dieser Anpassung liefs dann nach meiner Einschätzung ganz gut:

Code: Alles auswählen

du -b --max-depth=0 ${1:-.}/* 2> /dev/null                               \
 | awk '{ n=int(log($1)/log(2));                                         \
          if (n<10) n=10;                                                \
          size[n]++ }                                                    \
      END { for (i in size) printf("%d %d\n", 2^i, size[i]) }'           \
 | sort -n                                                               \
 | awk 'function human(x) { x[1]/=1024;                                  \
                            if (x[1]>=1024) { x[2]++;                    \
                                              human(x) } }               \
        { a[1]=$1;                                                       \
          a[2]=0;                                                        \
          human(a);                                                      \
          printf("%3d%s: %6d\n", a[1],substr("kMGTEPYZ",a[2]+1,1),$2) }'
Den Unterschied von -s und --max-depth=0 habe ich nicht verstanden.... :roll:

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

Re: Scripting Contest

Beitrag von Meillo » 27.05.2018 22:39:34

Eigentlich darf man bei einem Histogramm doch keine leeren Klassen weglassen, oder? Das wuerde doch, zumindest in einer grafischen Darstellung, die Aussage verfaelschen. Wenn ich die Ausgabe der TRex'schen Superuser-Loesung mit meiner vergleiche, dann wird's in ersterer etwas schwierig eine grafische Darstellung einzubauen, weil die leeren Klassen fehlen. Die bekommt man nur wenn man explizit ``von aussen'' ueber das Array iteriert.


Mittels der Inspiration aus TRex' Code habe ich meine Loesung nochmal verbessert:

Code: Alles auswählen

#!/bin/sh
# Histogram of file sizes
# https://debianforum.de/forum/viewtopic.php?f=34&t=156724


du -s "$@" | awk '

function stars(n) {
	s = ""
	while (n--) {
		s = s "*"
	}
	return s;
}

function human(x) {
	u = 1
	while (x >= 1024) {
		x /= 1024;
		u++
	}
	return x substr("kMGTEPYZ", u, 1)
}

{
	e = int(log($1)/log(2)) + 1
	if (e > maxe) {
		maxe = e
	}
	hist[e]++
}

END {
	for (i=0; i<=maxe; i++) {
		printf("< %4s: %s\n", human(2^i), stars(hist[i]))
	}
}
'
Use ed once in a while!

Benutzeravatar
TRex
Moderator
Beiträge: 8038
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: Scripting Contest

Beitrag von TRex » 27.05.2018 22:41:43

Meillo hat geschrieben: ↑ zum Beitrag ↑
27.05.2018 22:17:39
@eggy: Clever, fuer diese Aufgabe R zu nehmen!
Ich hab auch darüber nachgedacht, python mit numpy/matplotlib zu nehmen... aber ich finde Portabilität der Form "wenige Abhängigkeiten" ist viel wert. Aber ja, spezialisierte Tools machen die Lösung gleich dreimal verständlicher und man erfindet das Rad nicht neu.

Die Formatierung hätte ich selbst vermutlich nicht so angelegt - viel zu kompliziert/starr zum Bearbeiten. Aber zum Posen auf superuser/stackoverflow taugts :D

@meillo: gutes Auge auf den leeren Klassen!
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

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

Re: Scripting Contest

Beitrag von Meillo » 27.05.2018 22:44:24

TomL hat geschrieben: ↑ zum Beitrag ↑
27.05.2018 22:37:46
Meillo hat geschrieben: ↑ zum Beitrag ↑
27.05.2018 22:17:39
Btw: Die Formatierung von dem Code ist ja abgefahren ...
Nicht nur das.. ich find das insgesamt total abgefahren ....
Wenn man awk-Code gewohnt ist, ist dieser ganz in Ordnung. ;-)
1. Problem:

Code: Alles auswählen

du -bs ${1:-.}/* 
du: Warnung: Zusammenfassen widerspricht --max-depth=1
„du --help“ liefert weitere Informationen.
Kann ich nicht nachvollziehen. Bei mir laeufts problemlos.
2. Problem (Auszugsweise nur einige dieser "Fehler"):

Code: Alles auswählen

du -b --max-depth=0 ${1:-.}/*
du: Zugriff auf './proc/194/task/194/fd/3' nicht möglich: Datei oder Verzeichnis nicht gefunden
du: Zugriff auf './proc/194/task/194/fdinfo/3' nicht möglich: Datei oder Verzeichnis nicht gefunden
du: Zugriff auf './proc/194/fd/3' nicht möglich: Datei oder Verzeichnis nicht gefunden
du: Zugriff auf './proc/194/fdinfo/3' nicht möglich: Datei oder Verzeichnis nicht gefunden
Da hast du das Script wohl im root-Verzeichnis gestartet. Derartige Meldungen sind normal wenn man auf Dateien unterhalb von /proc zugreift.
Use ed once in a while!

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

Re: Scripting Contest

Beitrag von Meillo » 27.05.2018 22:51:20

Mein Script verwendet nur `du -s'. Wenn man weiss, dass man ein GNU du hat, ist `du -sb' besser (liefert Bytes). Fuer POSIX-Konformitaet ist `du -sk' die beste Wahl (liefert Kilobytes).

Ganz interessant dazu der Rationale-Abschnitt der POSIX-Seite zu du(1): http://pubs.opengroup.org/onlinepubs/96 ... es/du.html
Use ed once in a while!

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

Re: Scripting Contest

Beitrag von Meillo » 12.07.2018 22:16:41

Neue Aufgabe:

Implementiere ein Einfaerben der Matches fuer grep(1) (oder egrep(1)), ohne `--color' zu verwenden. Es geht also um irgendeine Art von Wrapper um grep(1), der die Treffer in der Ausgabe einfaerbt, so wie `grep --color' das tut.

Gesucht sind kreative Ansaetze. (Die Behandlung aller Randfaelle kann vernachlaessigt werden.)


Loesungen koennen ab kommendem Sonntag, 18:00 gepostet werden.
Use ed once in a while!

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

Re: Scripting Contest

Beitrag von Meillo » 15.07.2018 19:28:41

Hier meine Implementierung:

Code: Alles auswählen

#!/bin/sh

re="$1"
shift

start="`printf '\033[31;01m\033[K'`"
end="`printf '\033[m\033[K'`"

cmd=`egrep -on "$re" "$@" | sort -u | sed '
        s_\([0-9]*\):\(.*\)_NR==\1 {gsub("\2", "'"$start"'\2'"$end"'");print}_
'`
awk "$cmd" "$@" 
Die Idee ist, zweimal durch die Datei zu laufen. Beim ersten Mal mit `grep -on' nur die Matches mit Zeilennummer rauszuholen. Daraus baue ich dann mittels sed ein awk-Script. das beim zweiten Durchgang durch die Datei diese Matches einfaerbt. :-)

Robustheit ist was anderes, aber von der Herangehensweise finde ich die Aufgabe sehr spannend. Mal sehen, ob mir noch eine weitere Herangehensweise einfaellt ...

Die Terminalcolorescapes habe ich uebrigens von `grep --color' abgeschaut. Weiss jemand was das `\033[K' macht?


Die Idee dazu hatten ein Freund und ich neulich. Da dachte ich, dass sich das auch als Scripting-Contest-Aufgabe eignen wuerde. Nun bin ich auf weitere Loesungen, Ideen und Kommentare gespannt.
Use ed once in a while!

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

Re: Scripting Contest

Beitrag von eggy » 15.07.2018 20:35:04


tobo
Beiträge: 1964
Registriert: 10.12.2008 10:51:41

Re: Scripting Contest

Beitrag von tobo » 15.07.2018 22:25:35

Soll das denn so sein, dass die Ausgabe bei Mehrfachtreffern auch mehrfach geschieht? Wenn ich z.B. diese Zeile in einer Datei habe:
#ifconfig eth0 192.168.10.1 netmask 255.255.255.0 up>
und ich suche nach
"[0-9]\.[0-9]+"
dann bekomme ich 4 Ausgabezeilen, unterschiedlich eingefärbt UND textlich (eth0.) verändert!? {EDIT: Beschränkt sich offensichtlich auf "[0-9]"}

Falls das jetzt lösungstechnisch nicht zwingend vorgeschrieben ist grep zu verwenden, um grep zu simulieren - sed kann ja auch direkt regex!? Nur umgeschrieben und "nicht" ausgiebig getestet:

Code: Alles auswählen

#!/bin/sh

re="$1"
shift

start="`printf '\033[31;01m'`"
end="`printf '\033[m'`"

sed -rn 's/'"$re"'/'"$start"'&'"$end"'/gp' "$@"

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

Re: Scripting Contest

Beitrag von Meillo » 16.07.2018 09:48:53

tobo hat geschrieben: ↑ zum Beitrag ↑
15.07.2018 22:25:35
Soll das denn so sein, dass die Ausgabe bei Mehrfachtreffern auch mehrfach geschieht? Wenn ich z.B. diese Zeile in einer Datei habe:
#ifconfig eth0 192.168.10.1 netmask 255.255.255.0 up>
und ich suche nach
"[0-9]\.[0-9]+"
dann bekomme ich 4 Ausgabezeilen, unterschiedlich eingefärbt UND textlich (eth0.) verändert!? {EDIT: Beschränkt sich offensichtlich auf "[0-9]"}
Du hast recht, das ist falsch. Es ist die Folge eines klassischen Problems bei der Softwareentwicklung. Ich habe die ganze Zeit mit diesem Code entwickelt und getestet:

Code: Alles auswählen

#!/bin/sh

re="$1"
shift

start="`printf '\033[31;01m\033[K'`"
end="`printf '\033[m\033[K'`"

cmd=`egrep -on "$re" "$@" | sort -u | sed '
        s_\([0-9]*\):\(.*\)_NR==\1 {gsub("\2", "'"$start"'\2'"$end"'")}_
'`
awk "$cmd;1" "$@"
Erst ganz am Ende habe ich realisiert, dass ich nur die gematchten Zeilen ausgeben sollte (also auch greppe und nicht nur highlighte). Folglich habe ich das ``;1'' in der letzten Zeile entfernt und in der sed-Ersetzung ein ``;print'' eingefuegt:

Code: Alles auswählen

#!/bin/sh

re="$1"
shift

start="`printf '\033[31;01m\033[K'`"
end="`printf '\033[m\033[K'`"

cmd=`egrep -on "$re" "$@" | sort -u | sed '
        s_\([0-9]*\):\(.*\)_NR==\1 {gsub("\2", "'"$start"'\2'"$end"'");print}_
'`
awk "$cmd" "$@"
... dachte mir, das wird schon passen. ;-)

Habe dann nur noch einen kleinen Test gemacht, der das Problem nicht gezeigt hat ...

Es ist ja nicht so, dass man dieses Problemszenario noch nie gesehen haette. Trotzdem faellt man drauf rein. Haette ich nur eine Testsuite geschrieben, die haette mich davor bewahrt! Also: Darum Testsuites schreiben! ... und auch laufen lassen!


Falls das jetzt lösungstechnisch nicht zwingend vorgeschrieben ist grep zu verwenden, um grep zu simulieren - sed kann ja auch direkt regex!? Nur umgeschrieben und "nicht" ausgiebig getestet:

Code: Alles auswählen

#!/bin/sh

re="$1"
shift

start="`printf '\033[31;01m'`"
end="`printf '\033[m'`"

sed -rn 's/'"$re"'/'"$start"'&'"$end"'/gp' "$@"
LOL! :lol: Da war ich ja mal super erfolgreich im unnoetig kompliziert sein. Von hinten durch die Brust ins Auge. :facepalm:

Danke, dass du mich aus meiner Denkrinne geholt hast. :THX:


Diese Aktion habe ich ja mal sowas von in den Sand gesetzt! :mrgreen:
Use ed once in a while!

tobo
Beiträge: 1964
Registriert: 10.12.2008 10:51:41

Re: Scripting Contest

Beitrag von tobo » 16.07.2018 19:21:45

Ich will ja nicht kleinlich sein, aber das stimmt immer noch nicht: Der Text wird am Anfang zu "eth0.1" ergänzt.
Die Rückgabe von egrep liefert:

Code: Alles auswählen

1:2.168
1:0.1
1:5.255
1:5.0
Und diese Rückgaben sind Strings, werden von AWK (bei der Suche) aber als RegEx behandelt, weswegen das "0.1" im Beispiel doppelt greift!? Das ist also ein grundsätzliches Problem. Ich habe mal ein bisschen probiert an \2 "zumzuquoten", mich dabei aber vom richtigen Ergebnis eher entfernt, weil ich von AWK halt schlicht keine Ahnung habe.

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

Re: Scripting Contest

Beitrag von eggy » 19.07.2018 08:48:10

Ich sitz grad an nen SVG-Problemchen und wahrscheinlich gibts schon nen kleines Tool dafür (oder Inkscape kann das irgendwie) aber vielleicht hat der ein oder andere ja trotzdem Lust sich damit zu beschäftigen: Aus einer SVG-Datei sollen alle Shapes extrahiert werden, dabei soll pro Shape die Farbe und evtl ein Objektname ausgegeben werden, zu jedem Shape soll auch eine Liste der (absoluten) Koordinaten ausgegeben werden. Kurven sollen dabei in Linien umgewandelt werden.

Klingt erstmal einfach, interessant wirds dadurch, dass in so einem Pfad relative und absolute Koordinaten gemischt auftreten können, Bewegungen auf eine Achse eingeschränkt werden können, und am Ende nur die Punkte des Polygons ohne die Kontrollpunkte der Bezierkurven in der Liste erscheinen sollen.

https://www.w3schools.com/graphics/svg_path.asp

Beispieldatei: NoPaste-Eintrag40384

Wie üblich: Lösungen bitte erst ab Sonntag 18:00h posten

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

Re: Scripting Contest

Beitrag von eggy » 19.12.2018 21:52:29

neuer Contest: Diesmal geht's um grafische Aufbereitung von Logfiles viewtopic.php?f=34&t=171699

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

Re: Scripting Contest

Beitrag von Meillo » 20.12.2018 12:59:06

eggy hat geschrieben: ↑ zum Beitrag ↑
19.12.2018 21:52:29
neuer Contest: Diesmal geht's um grafische Aufbereitung von Logfiles viewtopic.php?f=34&t=171699
Bitte die Loesungen im verlinkten Thread posten.
Use ed once in a while!

Benutzeravatar
ohnex
Beiträge: 391
Registriert: 31.01.2010 22:35:36

Re: Scripting Contest

Beitrag von ohnex » 21.12.2018 23:14:36

Hi

Schön das es hier weiter geht, freut mich :D

ciao

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Scripting Contest

Beitrag von inne » 01.06.2019 19:36:36

Eine neue Idee (Ein Schelm wer böses denkt :-)

Gegeben ist eine ASCII Plaintext Datei mit N Zeilen von unterschiedlicher Länge. Nun soll das Skript alle Zeilen ausgeben die min. 8 Zeichen und höchstens (max.) 16 Zeichen lang sind.

Abgabe Morgen oder So. nächste Woche. Ich habe eine Lösung, wo ich hoffe richtig "gegriffen" zu haben s. oben.

Benutzeravatar
TRex
Moderator
Beiträge: 8038
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: Scripting Contest

Beitrag von TRex » 01.06.2019 20:45:17

Das wird ein Einzeiler... Hab ich was übersehen?
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Scripting Contest

Beitrag von inne » 01.06.2019 21:06:03

Nein! Ich verrate es. Ich habe einen RegEx dafür: ^.{8,16}$

Code: Alles auswählen

grep -E "^.{8,16}$"
Oder wenn man die Zeichenanzahl wissen will:

Code: Alles auswählen

awk '/^.{8,16}$/ {printf("%d\t%s", length($0), $0)}'
Nun dürfen bessere Lösungen mit Begründung veröffentlicht werden. Oder meine kritisiert^^

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

Re: Scripting Contest

Beitrag von eggy » 02.06.2019 07:58:29

@inne: die Idee hinter der Woche Wartezeit ist, dass Leute sich unabhängig von einander Gedanken machen und daher auf völlig unterschiedliche Ansätze kommen, statt dem sonst üblichen "gute Lösung, aber das lässt sich noch optimieren". Für helft-mal-schnell haben wir ja noch den Rest vom Forum :mrgreen:

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Scripting Contest

Beitrag von inne » 02.06.2019 15:17:37

Du hast rechts eggy! Nun habe ich vorgelegt und Ihr müsst nachlegen. Wobei ich auch vergessen habe die Kriterien für den Sieg mit anzugeben, Schnelligkeit oder möglichst kurzer/unlesbarer Quellcode.

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Scripting Contest

Beitrag von ThorstenS » 03.06.2019 16:24:56

nicht besonders kurz, dafür aber sehr gut lesbar:

Code: Alles auswählen

awk 'length > 7 && length <17' $DATEI
Und die obligatorische Verbesserung bzgl. kürzerer Schreibweise:

Code: Alles auswählen

egrep "^.{8,16}$" $DATEI

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Scripting Contest

Beitrag von inne » 03.06.2019 17:40:29

ThorstenS hat geschrieben: ↑ zum Beitrag ↑
03.06.2019 16:24:56
Und die obligatorische Verbesserung bzgl. kürzerer Schreibweise:

Code: Alles auswählen

egrep "^.{8,16}$" $DATEI
Das egrep wird es aber wohl bald nicht mehr gegeben (zumindest in Debian)?

Antworten