Hier ist ein einfacher Weg, dies mit awk zu tun
echo "Buddies.forlife.com" | awk -F '.' '{ printf( "|0x%x|%s|0x%x|%s|0x%x|%s\n", length($1),$1, length($2),$2, length ($3), $3 )}' |0x7|Buddies|0x7|forlife|0x3|com
Der Befehl awk setzt das Feldtrennzeichen -F '.'
auf einen Punkt, sodass jedes Segment als eigenes Feld betrachtet wird.
Wir können dann auf diese Felder verweisen $1, $2 and $3
, die eingebaute Funktion verwenden length
, um die Anzahl der Zeichen für jedes Feld zu ermitteln, und die Ergebnisse mit einem printf ausdrucken ( %x
für Hex-Zahlen, %s
für die ursprünglichen Zeichenfolgen und für die Trennung der Ausgabefelder mithilfe des '|' Symbol in dem von Ihnen angegebenen Format.
Das 0x
Präfix wird normalerweise zur Anzeige von Hex-Zahlen verwendet, kann jedoch bei Bedarf in etwas anderes (oder nichts) geändert werden.