Jetzt habe ich kein Windows greifbar (müsste ich erst booten).
Aber unter Linux klappt folgendes:
1 | # Time-stamp: "26.01.10 16:23 makefile klaus?wachtler.de"
|
2 | #
|
3 |
|
4 | alt1 := "a234"
|
5 | alt2 := "b2345678"
|
6 | alt3 := "c234567890123456"
|
7 |
|
8 |
|
9 | all :
|
10 | @echo $(shell echo $(alt1)________ | sed -e 's/\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\).*/\1\2\3\4\5\6\7\8/')
|
11 | @echo $(shell echo $(alt2)________ | sed -e 's/\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\).*/\1\2\3\4\5\6\7\8/')
|
12 | @echo $(shell echo $(alt3)________ | sed -e 's/\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\).*/\1\2\3\4\5\6\7\8/')
|
Zur Erklärung:
ich hänge an den jeweiligen Namen 8 _ an, damit er erstmal
mindestens 8 Zeichen lang ist und kürze ihn anschließend
mit sed wieder auf 8 Zeichen. Letzteres mache ich mit Ersetzen
eines Musters: das erste Zeichen, also ein Punkt für "genau
ein Zeichen, egal welches" wird mit runden Klammern garniert
und damit im Ersetzungstext als \1 verwendbar, ebenso das
zweite Zeichen als \2 etc. bis \8. Der Rest (also .* im
Muster) wird nicht verwendet.
Ausgabe bei mir:
1 | klaus@a64a:/tmp > make
|
2 | a234____
|
3 | b2345678
|
4 | c2345678
|