Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
linuxCowboy
- Beiträge: 287
- Registriert: 05.02.2013 19:47:41
Beitrag
von linuxCowboy » 09.09.2014 10:53:17
Tausendertrennzeichen für Zahlen ab
5 Stellen:
Code: Alles auswählen
x=`for i in {1..9} {8..1};do seq -s '' $i;done`
echo $x
1 12 123 1234 12345 123456 1234567 12345678 123456789 12345678 1234567 123456 12345 1234 123 12 1
echo $x|perl -pe'while(/\d{5,}/){$b=$`;$m=$&;$a=$'\'';$m=~s/(?<=\d)(?=(\d\d\d)+\b)/./;$_="$b$m$a"}'
1 12 123 1234 12.345 123.456 1.234.567 12.345.678 123.456.789 12.345.678 1.234.567 123.456 12.345 1234 123 12 1
als
Alias!??
alias o=quotet_perl_oneliner
Code: Alles auswählen
echo $x | o
1 12 123 1234 12.345 123.456 1.234.567 12.345.678 123.456.789 12.345.678 1.234.567 123.456 12.345 1234 123 12 1
Habe selbst ich nicht hinbekommen.
(
$POSTMATCH zählt nicht)
Also zeigt mir wie gut ihr seid!
-der_linux_cowboy --- Besser werden! ... f*** w$$
-
cosmac
- Beiträge: 4576
- Registriert: 28.03.2005 22:24:30
Beitrag
von cosmac » 09.09.2014 11:11:56
hi,
endlich mal was, was nicht so kalt und nass ist
Code: Alles auswählen
$ vi o
perl -pe'while(/\d{5,}/){$b=$`;$m=$&;$a=$'\'';$m=~s/(?<=\d)(?=(\d\d\d)+\b)/./;$_="$b$m$a"}'
:wq
$ alias o=$(cat o)
$ x=`for i in {1..9} {8..1};do seq -s '' $i;done`
$ echo $x | o
1 12 123 1234 12.345 123.456 1.234.567 12.345.678 123.456.789 12.345.678 1.234.567 123.456 12.345 1234 123 12 1
ja, ja, ich weiß, das zählt nicht
Beware of programmers who carry screwdrivers.
-
kuerbis
- Beiträge: 20
- Registriert: 29.03.2014 12:06:40
Beitrag
von kuerbis » 09.09.2014 11:14:53
Code: Alles auswählen
$ alias o='perl -pe'"'"'while(/\d{5,}/){$b=$`;$m=$&;$a=$'"'"'\'"''"';$m=~s/(?<=\d)(?=(\d\d\d)+\b)/./;$_="$b$m$a"}'"'"
$ x='1 12 123 1234 12345 123456 1234567 12345678 123456789 12345678 1234567 123456 12345 1234 123 12 1'
$ echo $x | o
1 12 123 1234 12.345 123.456 1.234.567 12.345.678 123.456.789 12.345.678 1.234.567 123.456 12.345 1234 123 12 1
Alternativ:
Code: Alles auswählen
alias o='perl -pe'\''while(/\d{5,}/){$b=$`;$m=$&;$a=$'\''\'\'\'';$m=~s/(?<=\d)(?=(\d\d\d)+\b)/./;$_="$b$m$a"}'\'
"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies." (C.A.R. Hoare)
-
newdeb
- Beiträge: 134
- Registriert: 03.02.2011 11:11:21
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Frankfurt
Beitrag
von newdeb » 09.09.2014 18:08:30
Code: Alles auswählen
$ alias p='printf "%'\''12.0f\n"'
$ p $x
1
12
123
1.234
12.345
123.456
1.234.567
12.345.678
123.456.789
12.345.678
1.234.567
123.456
12.345
1.234
123
12
1
printf verpasst auch den 4stelligen Zahlen das Tsd.-Trennzeichen
-
linuxCowboy
- Beiträge: 287
- Registriert: 05.02.2013 19:47:41
Beitrag
von linuxCowboy » 09.09.2014 20:22:38
kuerbis hat geschrieben:Code: Alles auswählen
alias o='perl -pe'\''while(/\d{5,}/){$b=$`;$m=$&;$a=$'\''\'\'\'';$m=~s/(?<=\d)(?=(\d\d\d)+\b)/./;$_="$b$m$a"}'\'
Du hast es geschafft! Respekt! Es ist wirklich möglich.
noch kürzer:
Code: Alles auswählen
alias o='perl -pe'\''while(/\d{5,}/){$b=$`;$m=$&;$a=$'\'\\\'\'';$m=~s/(?<=\d)(?=(\d{3})+\b)/./;$_="$b$m$a"}'\'
Originell!
Man muss sich nur zu helfen wissen...
-der_linux_cowboy --- Besser werden! ... f*** w$$