Die letzten X Zeichen eines Strings einlesen - wie?

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von michaelg, 10.10.2008.

  1. #1 michaelg, 10.10.2008
    michaelg

    michaelg Grünschnabel

    Dabei seit:
    10.10.2008
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo zusammen,

    ich bin auf der Suche nach dem Befehl, mitdem ich die letzen x Zeichen eines Strings auslesen kann.

    Soll heißen:

    String outpout ist zB.:
    das ist mein string 123.445.323.33=234

    Jetzt möchte ich die letzten 3 Zeichen (in diesem Fall also die 234) in eine neue Variable schreiben. Was nimmt man da cut? awk? sed?

    Wichtig ist, das er "von rechts nach links" einließt und die letzten X Zahlen übergeben werden können, da der String keine fest Länge hat und variabel ist.

    Jemand ne Idee?

    Danke
    Gruß Michael
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Psyjo

    Psyjo Routinier

    Dabei seit:
    15.11.2005
    Beiträge:
    259
    Zustimmungen:
    0
    Ort:
    Hinter'm Berg
    Code:
     echo abc123 | sed 's/.*\(.\{3\}\)$/\1/' 
    liefert '123'

    Ich hoffe mal das ist was du suchst.

    Psyjo
     
  4. #3 michaelg, 10.10.2008
    michaelg

    michaelg Grünschnabel

    Dabei seit:
    10.10.2008
    Beiträge:
    2
    Zustimmungen:
    0
    Vielen DANK, hat prima funktioniert !
     
  5. #4 Gott_in_schwarz, 10.10.2008
    Zuletzt bearbeitet: 10.10.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    *Senf dazugeb*

    Wenn die Zeile jeweis ein Leerzeichen hat und du quasi die rechte Seite des Leerzeichens haben willst geht es auch so:
    Code:
    echo '123.445.323.33=234'|cut -d= -f2
    # oder so:
    echo '123.445.323.33=234'|awk -F= '{print $2}'
    # oder so:
    echo '123.445.323.33=234'|perl -anF= -le 'print $F[1]'
    Wenns nur die letzten drei Zeichen seien sollen gehts mit (GNU) grep imho übersichtlicher:
    Code:
    echo foobar|grep -o '...$'
    # oder so:
    echo foobar|grep -o '.\{3\}$'
    # oder mit egrep:
    echo foobar|egrep -o '.{3}$'
    # oder mit bash:
    var=123.445.323.33=234
    echo ${var: -3}
     
  6. #5 saeckereier, 10.10.2008
    Zuletzt bearbeitet: 11.10.2008
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Ich bin uuuuuunwürdig
     
  7. #6 Gott_in_schwarz, 10.10.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Ja du Held¹, lies mal genau, da steht bytes. You know about charsets, do you?
    Code:
    $ echo foobar|tail -c3
    ar
    $ echo foobar|tail -c4
    bar
    $ echo 123µ|tail -c3
    µ
    $ echo µφγvσöϑβµρινζρισι|tail -c10
    �ρισι
    $ echo 썂썃썍썙|tail -c4
    썙
    $ echo 썂썃썍썙|grep -o '...$'
    썃썍썙
    $ echo $LANG
    en_US.UTF-8
    ad 1: wie man in den Wald reinruft..

    Also das "Helden" hättest du dir wirklich sparen können, aber nungut...
     
  8. #7 Wolfgang, 10.10.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Ja, ja das gute alte ASCII. ;)
    Und Heute?
    Nichts ist mehr wie es scheint.
    So verglüht das Heldentum am digitalen Horizont. ;)

    @Gott_in_schwarz

    Die Mordslösung mit 2 x rev und cut hast du vergessen. ;)

    Verbraucht immerhin weniger als 5 Prozesse und funzt sogar. *lol*

    Nix für Ungut.

    Friede sei mit Euch (Ihr Helden)
    *g*

    Wolfgang
     
  9. #8 saeckereier, 11.10.2008
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    @Gott_in_Schwarz: Habe meinen Post deinen Anregungen zufolge editiert. Im Ernst, ich bin mir dessen vollkommen bewusst gewesen und mit ISO-* funktioniert es ja auch. Nur dass wir das unter Linux eigentlich fast nicht mehr einsetzen, das ist wohl wahr. Ich habe in meiner Firma genug Probleme damit gehabt, da hätte man wenigstens was dazu schreiben sollen.
     
  10. #9 Gott_in_schwarz, 11.10.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Ach unwürdig, pff. Ging halt primär um das "Helden". Und das head da so archaisch ist, naja, schade drum in Unicode-Zeiten.
    Friede, Freude, Apfelkuchen :)

    Alibi-ontopic: (aber wieder byteorientiert :0)
    Code:
    echo foobar|rev|cat|xargs echo|cut -b 1-3|rev
    (Disclaimer: Lieber nicht in Produktivcode verwenden. ^^)
     
  11. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  12. #10 saeckereier, 11.10.2008
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Geiler Code... Nee, aber das tail Dingens ist wirklich blöde und du kannst wetten, dass wenn ichs stehengelassen hätte, jemand dasgefunden und sich irgendwann gewundert hätte, warums bei bestimmten Fällen komischerweise nicht klappt..
     
  13. #11 Wolfgang, 11.10.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Code:
    $ echo "Eint test mit 123"|rev|cut -c1-3|rev
    123
    
    Nicht Byteorientiert!
    Trotzdem overkill.
     
Thema: Die letzten X Zeichen eines Strings einlesen - wie?
Besucher kamen mit folgenden Suchen
  1. linux teilstring von rechts

    ,
  2. bash letzen 5 zeichen

Die Seite wird geladen...

Die letzten X Zeichen eines Strings einlesen - wie? - Ähnliche Themen

  1. Prüfen ob ein Datum innerhalb letzten 2 Wochen liegt

    Prüfen ob ein Datum innerhalb letzten 2 Wochen liegt: Hallo, ich bräuchte eine Funktion die prüft ob ein Datum im Format tt.mm.JJJJ innerhalb der letzten 2 Wochen liegt. Oder anders ausgedruckt, ob...
  2. Skript - letzten Samstag im Monat

    Skript - letzten Samstag im Monat: Hallo zusammen, ich möchte gerne unser backup über ein skript starten lassen, dieses soll aber nur am letzten Samstag im Monat laufen. Ich...
  3. Letzten Tag löschen

    Letzten Tag löschen: Hi, ich bin ein absoluter Neuling mit bash Scripten, ah da ich bei einem Projekt in allen php Dateien die letzten, schließenden PHP-tags entfernen...
  4. Log archivieren bis auf die letzten drei

    Log archivieren bis auf die letzten drei: Hallo, ich möchte ein Script schreiben, dass mir alles Accesslogs archiviert, bis auf die letzten drei. Bisher mache ich das manuel, würde...
  5. Textfile mit Text separiert durch Leerzeile, wie letzten Text rausbekommen?

    Textfile mit Text separiert durch Leerzeile, wie letzten Text rausbekommen?: Hi, wie geschrieben, ich habe ein Textfile, welches quasi so aussieht: Text text text text text text text letzter text bevor...