Falls ihr euch immer geärgert habt das “cut“ immer nur ein und nicht mehrere Zeichen zum auseinander schneiden unterstützt, dann nehmt doch awk.
“awk“ unterstüzt dieses udn noch viel mehr.
Awk hat den Konsolenschalter “-F” dem eine beliebige Zeichenkette übergeben werden kann. Nach dieser Zeichenkette splittet awk dann den String auf.
Dann müsst ihr nur noch die gewollten Teile ausgeben mit “print”.
Beispiel:
awk -F"delim" '{print $1; print $2; print $3}' testfile
Neben dem Spickzettel für die MySQL Integer Größe habe ich mir nun noch ein für die MySQL TEXT/BLOB Größe gemacht.
CHAR / BINARY
Größe festgelegt durch die Anzahl der Zeichen, aber maximal 255 Zeichen.
Also immer ein Festwert, egal ob gefüllt, halb gefüllt oder leer.
VARCHAR / VARBINARY
Definierte Feldgröße: * von 0-255 Zeichen: Anzahl der Zeichen + 1 Byte * von 256-65532 Zeichen Anzahl der Zeichen + 2 Byte
Also ein VARCHAR (500) brauch für das abspeichern von “abcd” ein Byte mehr Platz als ein VARCHAR (200).
TINYTEXT / TINYBLOB
Größe: < 2 8 Byte (+ 1 Byte MySQL)
daraus ergibt sich max. 255 (Ein-Byte1 ) Zeichen
TEXT / BLOB
Größe: < 2 16 Byte (+ 2 Byte MySQL )
daraus ergibt sich max. 65535 (Ein-Byte1 ) Zeichen oder ungefähr 64 KByte
MEDIUMTEXT / MEDIUMBLOB
Größe: < 2 24 Byte (+ 3 Byte MySQL)
daraus ergibt sich max. 16777216 (Ein-Byte1 ) Zeichen oder ungefähr 16 MB
LONGTEXT / LONGBLOB
Größe: < 2 32 Byte (+4 Byte MySQL)
daraus ergibt sich max. 4294967296 (Ein-Byte1 ) Zeichen oder ungefähr 4 GB
1 Ein Byte Zeichen deswegen weil sich die Anzahl der Zeichen bei Unicode-/Nicht ASCII-Zeichen entsprechend verringert.
- 1 Byte je Zeichen benutzt das normale Latin
- 2 Byte je Zeichen benutzen die meisten Europäischen Sprachen mit Umlauten, Akzenten usw.
- 3 Byte je Zeichen werden nur von chinesischen , koreanischen und japanischen Schriftzeichen benutzt.
Daraus folgt in einem Normalen “TEXT” können “nur” 21845 Chinesische oder 32767 “Normale” Nicht ASCII Zeichen untergebracht werden. Deswegen nochmal die Angabe in Byte
So damit ich es mir endlich mal merke und nicht jedes mal nach schauen muss habe ich hier mal die 5 Integer Felder der MySQL Datenbank in einer Kurzzusammenfassung zusammengestellt mit Namen, dem Wertebereich für Vorzeichen behaftet (signed) und ohne Vorzeichen (unsigned).
TINYINT
Größe: 8 Bit
signed: von -128 bis 127
unsigned: von 0 bis 255
SMALLINT
Größe: 16 Bit
signed: von -32768 bis 32767
unsigned: von 0 bis 65535
MEDIUMINT
Größe: 24 Bit
signed: von -8388608 bis 8388607
unsigned: von 0 bis 16777215
INT oder INTEGER
Größe: 32 Bit
signed: von -2147483648 bis 2147483647
unsigned: von 0 bis 4294967295
BIGINT
Größe: 64 Bit
signed: von -9223372036854775808 bis 9223372036854775807
unsigned: von 0 bis 18446744073709551615
Arithmetische Funktionen sollte nicht auf BIGINTs die selbst größer 63 Bit (9223372036854775807) sind oder deren Ergebnisse größer der besagten 63 Bit sind angewendet werden, da sonst Rundungsfehler auftreten können ,da MySQL dann mit DOUBLE werten arbeitet
Da ich es immer wieder lese aber auch immer wieder vergessen hier nochmal ein Spickzettel an mich betreffen Load Average auf Linux/Unix
# cat /proc/loadavg 0.70 0.64 0.58 2/355 10506
0.70 load, gemittelt auf 1 Minute, alle 5 Sekunden neu
0.64 gemittelt auf 5 Minuten
0.58 gemittelt auf 15 Minuten
2/355: Zwei Tasks (Prozeße) von insgesamt 355 sind “Runnable”.
10506 war/ist die letzte PID des Systems
load von 1 bedeutet, daß ein Prozeß Ressourcen haben will, bei Linux zählt dabei das warten auf die Platte dazu.
Links:
Keine Ahnung wem das schon alles auf die Füße gefallen ist, mir ist es gestern, Was macht man mit Umlauten wenn man mit Regulären Ausdrücken arbeitet?
Naja wenn man die PHP Manual liest, oder besser gesagt die meist viel interessanteren Komentare, findet man recht schnell eine Lösung.
Lösungsansatz 1.
<?php
setlocale (LC_ALL, 'de_DE');
$match = preg_match("/^[[:alpha:]]+$/", $data);
?>
Was hier genau gemacht wird ist halt das System auf “Deutsch” umzustellen und somit wird auch der Inhalt der RegExp Zeichenklasse “:alpha:” mit den deutschen Umlauten gefüttert. Die Lösung ist eigentlich schon recht brauchbar.
Was macht man aber wenn auf irgend eine Weise ein Franzose oder ein Spanier sich auf die Webseite “verirrt” hat, oder sogar mit purer Absicht auf eure Seite gekommen ist. Da haben wir ja alle gelernt das UTF-8 so richtig dolle toll ist wenn es um Mehrsprachigkeit geht.
Und UTF-8 ist auch das Zauberwort für Lösung Nummer 2.
<?php
$match = preg_match("/[\w\p{L}]/u",$data);
?>
Hier wird zum einen mit dem Modifier “u”, Achtung kleines u ein Großes U hat wiederum eine andere bedeutung, die UTF-8 fähigkeit der Regulären Ausdrücke in PHP eingeschalten und zum anderen per “\p{L}” sagen wir das jede Unicode Sequenz die ein Buchstabe ist zutreffen soll.
Hier nochmal einige weiterführende Links:
