Portál AbcLinuxu, 11. května 2025 16:01
LoremIpsumDolorSitAmet,ConsectetuerAdipiscingElit.MorbiNibhText potrebujem previest do povodnej podoby, teda vlozit medzeru pred kazde velke pismeno. d.
| sed 's/\([A-Z]\)/ \1/g'
mike@lion:~> echo $LANG cs_CZ.UTF-8 mike@lion:~> echo "LoremIpsumDolorSitAmet" | sed 's/\([A-Z]\)/ \1/g' L o r e m I p s u m D o l o r S i t A m e t mike@lion:~> echo "LoremIpsumDolorSitAmet" | sed 's/[[:upper:]]/ &/g' Lorem Ipsum Dolor Sit Amet
$ echo $LANG cs_CZ.UTF-8 $ echo "LoremIpsumDolorSitAmet" | sed 's/\([A-Z]\)/ \1/g' Lorem Ipsum Dolor Sit Amet
Zdá se, že existují (přinejmenším) dvě verze českého locale. To moje (OpenSuSE 10.2) řadí takto:
mike@lion:~/tmp> echo -e "aa\nab\nAa\nAb\nba\nbb\nBa\nBb" | sort Aa aa Ab ab Ba ba Bb bb
což by podle mých znalostí českého řazení mělo být správně.
btw, ako sa ten váš predchádzajúci "chybný" sed chová, ak mu v reťazci dáte aj písmeno z? Podľa tejto logiky by malo zostať bez medzery.
Proč myslíte, že je to chybné? Já si tím nejsem tak jistý. Dokonce bych spíš řekl, že je to správně.
Ano, před 'z
' mezera nebude, stejně jako před 'ž' nebo 'Ž':
mike@lion:~/tmp> echo "abczdefŽghižjkl" | sed 's/\([A-Z]\)/ \1/g' a b cz d e fŽ g h iž j k l
[ivok@zero ~]$ echo $LANG cs_CZ.UTF-8 [ivok@zero ~]$ echo -e "aa\nab\nAa\nAb\nba\nbb\nBa\nBb" | grep -o '[a-z]*' aa ab ba bb Ba Bb [ivok@zero ~]$ echo -e "aa\nab\nAa\nAb\nba\nbb\nBa\nBb" | grep -P -o '[a-z]*' aa ab ba bb
$ echo -e "aa\nab\nAa\nAb\nba\nbb\nBa\nBb" | sort Aa aa Ab ab Ba ba Bb bb
A-Z
' obsahovat i písmeno 'a
'.
sed
vůbec locales? Obsahuje pro něj interval 'A-Z
' třeba 'Č
'? U mne třeba tr
ignoruje locales úplně:
mike@lion:~> tr '[:lower:]' '[:upper:]' aábcčdďéěf AáBCčDďéěF
... U mne třeba tr
ignoruje locales úplně ...
Jen jestli to náhodou není tím, že tr
ignoruje spíš to unicode $ echo č | tr '[:lower:]' '[:upper:]' Č $ echo $LANG cs_CZaka ISO Latin 2
$ echo "LoremIpsŽČŠĚŘumDolorSitiiAmet" | sed 's/\([A-Z]\)/ \1/g' Lorem IpsŽ Č Š Ě Řum Dolor Sitii AmetCo jsem koukal do Debianích patchů na locales, tak se tam převádí České locales na ISO 14651, což sice nevím co je, ale může to být důvod jiného chování.
echo "LoremIpsumDolorSitAmet" | sed 's/[A-Z]/ &/g'
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.