hallo, ich habe einen string, der hat 100 Zeichen. wie kopiere ich die ersten 10 Zeichen in die Variale mycut? Kann mir jemand ein Beispiel machen, googlet habe ich schon
scriptbau: suchen und kopieren...
![]() Anmeldungsdatum: Beiträge: 205 |
|
||||
![]() Anmeldungsdatum: Beiträge: 17432 Wohnort: Berlin |
|
||||
![]() Anmeldungsdatum: Beiträge: 2503 |
Doku dazu: http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion Suchhilfe für’s nächste Mal: „bash substring“ |
||||
![]() Anmeldungsdatum: Beiträge: Zähle... |
http://wiki.bash-hackers.org/syntax/pe ich hatte immer nach parameter expansion gesucht. was sonst immer geht und super einfach ist echo STRING12345678910 |cut -c 1-10 . Nicht schön aber die Syntax ist einfach einfach 😉 |
||||
![]() Anmeldungsdatum: Beiträge: 17432 Wohnort: Berlin |
Oder:
oder
|
||||
![]() Anmeldungsdatum: Beiträge: 7174 Wohnort: Wolfen (S-A) |
... ist aber teilweise bösartig, weil es mit Mehr-Byte-Zeichen (→ utf-8) nicht korrekt umgeht ! (die Par. Expansion ist da sauber) - Guckstu: track@track:~$ echo STRING12345678910 | cut -c 1-10 STRING1234 track@track:~$ echo STRÄNG12345678910 | cut -c 1-10 STRÄNG123 track@track:~$ w=STRING12345678910 track@track:~$ echo ${w:0:10} STRING1234 track@track:~$ w=STRÄNG12345678910 track@track:~$ echo ${w:0:10} STRÄNG1234 LG, track |
||||
![]() Anmeldungsdatum: Beiträge: 17432 Wohnort: Berlin |
Das war meinerseits aber Glück, das hatte ich auch nicht auf dem Schirm. |
||||
![]() Anmeldungsdatum: Beiträge: 2503 |
Wie gemein. Das wusste ich auch nicht. Beziehungsweise, ich dachte, dass genau dafür die Unterscheidung zwischen „ http://unix.stackexchange.com/questions/163721/can-not-use-cut-c-characters-with-utf-8 In OpenBSD hingegen: # export LANG=en_US.UTF-8 # echo STRÄNG7890xxxxxxxxxxx | cut -c 1-10 STRÄNG7890 # echo STRÄNG7890xxxxxxxxxxx | cut -c 4 Ä Und „ # echo STRÄNG7890xxxxxxxxxxx | cut -b 4 � # echo STRÄNG7890xxxxxxxxxxx | cut -b 4-5 Ä So hätte ich das auch im GNU-Land erwartet. 😲 |