Linux-Distributionen Zeileninhalt suchen und ausgeben

Dieses Thema im Forum "Software" wurde erstellt von Russe89, 23. Feb. 2012.

  1. Russe89

    Russe89 VIP Mitglied

    Registriert seit:
    10. Apr. 2009
    Beiträge:
    1.006
    Zustimmungen:
    6
    hallo leute,

    ja ich bin auch noch da, und ich habe da eine kleinigkeit die mir seit einiger zeit kopfzerbrechen bereitet...
    undzwar versuche ich am N900 eine datei auszulesen, davon einen bestimmten teil einer zeile,
    hier mal der wichtige ausschnitt:
    Code:
    PatternIncomingCall=1;3;0;0;30;700;0;1000;133
    PatternIncomingMessage=3;3;3;2;4;266;0;300;60
    PatternPowerKeyPress=5;5;1;1;0;16;0;16;128
    PatternTouchscreen=10;3;0;1;23;0;15;50;120
    PatternChatAndEmail=4;3;1;1;30;360;0;100;50
    PatternUserManual=9;1;0;1;0;0;0;0;0
    per sed kriege ich schonmal nurnoch zwei zeilen ausgegeben
    Code:
    sudo sed -n '/PatternIncomingMessage=3;3;3;2;4;266;0;300/,/PatternPowerKeyPress/p' /etc/mce/mce.ini

    aber ich möchte aus der zeile PatternIncomingMessage die letzte zahl, also die 60 ausgegeben haben, nicht mehr und nicht weniger..
    wenn das klappt habe ich ein kleines skript das die mce.ini bearbeitet und mce neustartet, somit kann man die vibrationsstärke per queen-beecon widget direkt am homescreen anpassen.
    nachts möchte ich die vibration zb nicht ganz ausmachen, sondern nur schwächer einstellen, falls ich doch wach bin um es zu hören, will davon aber nicht geweckt werden, und beim arbeiten muss die vibration stark eingestellt sein, weil sonst kriege ich das nicht mit.. jedesmal manuell bearbeiten ist mir auf dauer zu umständlich.
    Und das auslesen dieser zahl soll der übersichtlichkeit dienen, damit ich weiß was gerade eingestellt ist.

    hoffe ihr versteht wie ich das meine ;)

    als kleiner bonus wäre evtl noch das bearbeiten dieser zeile, auch wenn statt der 60 oder der 255(stark eingestellte vibration) irgendeine andere zahl an dieser stelle steht, also wenn ich die mal manuell auf 90 oder so einstelle.

    vielen dank schonmal an alle, ich poste das im bereich linux und nicht maemo, weil es eine allgemeine linux-frage ist ;)
    evtl wäre aber auch "programmierung" als präfix geeignet :P

    Russe
     
  2. Protector

    Protector VIP Mitglied

    Registriert seit:
    7. Apr. 2007
    Beiträge:
    14.565
    Zustimmungen:
    41
    sed ist echt unmöglich kompliziert :fresse

    Hab das sonst nie benutzt muss ich ehrlich sagen. Aber...hier mal ein "kleineres" Beispiel:

    sed 's/^\(.*,.*,\).*\(,.*\)$/\1 1234 \2/ '

    Code:
    's/^[COLOR="#FF0000"]\(.*,.*,\)[/COLOR][COLOR="#0000FF"].*[/COLOR][COLOR="#00FF00"]\(,.*\)[/COLOR]$/[COLOR="#FF0000"]\1[/COLOR] [COLOR="#0000FF"]1234[/COLOR] [COLOR="#00FF00"]\2[/COLOR]/ '


    gesucht wird auf der ganzen Zeile von Anfang (^) bis Ende ($)
    Erster Suchbereich geht von Anfang bis zum 2. Komma und wird bei der Ersetzung mit (\1) unverändert wieder eingesetzt
    zweiter Suchbereich schließt sich an und wird ersetzt
    der dritte Suchbereich folgt anschließend mit einem Komma -bis Ende und wird wieder (\2)unverändert eingesetzt.

    Ansonsten kann ich dir nur die Anleitung von sed selbst zur Hand geben, weil das Thema wirklich sehr sehr komplex ist:

    sed Tutorium
     
  3. Russe89

    Russe89 VIP Mitglied

    Registriert seit:
    10. Apr. 2009
    Beiträge:
    1.006
    Zustimmungen:
    6
    So hier mal ein kleines Update.
    Danke Prot, ich werde es mal versuchen was das bewirkt :P also das was du gerade gepostet hast beschreibt den zweiten teil meiner Problemstellung...

    habe es derzeit so gelöst:

    variable erstellt
    (also eine leere datei in die dann der aktuelle wert reingeschrieben wird, hier: /home/user/.custom-vibration)
    widget hat 3 bereiche:
    1: variable ändern in 60
    2: variable ändern in 120
    3: anzeige welchen wert die variable hat

    da ich wohl erstmal nur bei den beiden werten bleibe kann ich auf die einfache weise
    Code:
    sudo sed -i '/PatternIncomingMessage/s/120/60/g' /etc/mce/mce.ini
    bzw
    Code:
    sudo sed -i '/PatternIncomingMessage/s/60/120/g' /etc/mce/mce.ini
    den wert in der mce.ini anpassen.
    die ausgabe welcher wert aktiv ist hole ich aus der variablen, fertig aus :)

    Wenn interesse besteht kann ich das "skript" hochladen ;)

    Russe
     
  4. Protector

    Protector VIP Mitglied

    Registriert seit:
    7. Apr. 2007
    Beiträge:
    14.565
    Zustimmungen:
    41
    Klar, wieso nicht :D Lads doch einfach hoch. Vllt interessiert ja jmd :D
     
  5. Russe89

    Russe89 VIP Mitglied

    Registriert seit:
    10. Apr. 2009
    Beiträge:
    1.006
    Zustimmungen:
    6
    Leider muss das aber bis montag ca warten... habe hier gerade kein usb-kabel parat und mit mäßigem 2G-Empfang durchs forum wursten ist ein wenig zuviel des guten :P
    Packe das Fertige Skript dann in den Maemo-Bereich inklusive .png damit jeder das Widget ans laufen bekommt ;)

    Jetzt wo ich mich öfter mal mit dem Queen-Beecon-Widget auseinandersetze ist es doch ein super widget, komplizierter - ja - aber umso vielseitiger ist es :D


    /Gedankenblitz:

    im skript verwende ich $x für die ausgabe per echo,
    kann ich in einem sed-befehl auch die variable verwenden? also folgendermaßen:
    Code:
    sudo sed -i '/blabla/s/$alterwert/120/g'
    wobei $alterwert vorher zb aus der datei /home/user/.vibration_old
    ausgelesen wurde oder so?
     
  6. Russe89

    Russe89 VIP Mitglied

    Registriert seit:
    10. Apr. 2009
    Beiträge:
    1.006
    Zustimmungen:
    6
    So, sry wegen doppelpost, aber hier mal das "Skript":

    vorbereitung:
    mit einem editor als root (nano, vi, leafpad oder sonstiger editor, weiß ich nit was ihr nutzt)
    die datei /etc/mce/mce.ini bearbeiten.
    mit leafpad siehts zb so aus:
    Code:
    sudo leafpad /etc/mce/mce.ini
    oder eben
    Code:
    suo gainroot
    leafpad /etc/mce/mce.ini
    Ziemlich am ende der Datei steht folgende Zeile:
    Code:
    PatternIncomingMessage=3;3;3;[COLOR="#00FF00"]2[/COLOR];4;[COLOR="#0000FF"]266[/COLOR];0;[COLOR="#DAA520"]300[/COLOR];[COLOR="#FF0000"]60[/COLOR]
    nur sind dort andere werte gegeben, die habe ich für mich so angepasst.
    die wichtigen werte wären da zb:
    4. wert (2): wiederholungen, 0 für unendlich.
    6. wert 266: vibrationszeit in ms.
    8. wert 300: pausenzeiten zwischen wiederholungen in ms.
    und schließlich 9. und wichtigster wert 60: vibrationsstärke.

    dort könnt ihr eure ersten änderungen und anpassungen vornehmen.
    Achtung, einstellungen werden erst nach einem "sudo killall mce" übernommen, dafür geht ganz kurz die komplette beleuchtung aus (kaum wahrzunehmen) danach sollten die neuen werte übernommen worden sein.

    weiter gehts, das skript sieht folgendermaßen aus:
    Code:
    x =$(cat /home/user/.custom_vibration)
    level1=60
    level2=120
    cx=$QBW_CLICK_X
    if [ $cx -ge 1 -a $cx -le 99 ]; then x=$level1; sudo sed -i '/PatternIncomingMessage/s/120/60/g' /etc/mce/mce.ini;sudo killall mce;fi
    if [ $cx -ge 101 -a $cx -le 199 ]; then x=$level2; sudo sed -i '/PatternIncomingMessage/s/60/120/g' /etc/mce/mce.ini;sudo killall mce;fi
    echo $x "    "
    echo $x >/home/user/.custom_vibration
    Die nötige datei .custom_vibration wird automatisch beim ausführen erstellt.

    Dieses skript kommt in ein Queen Beecon Widget.
    folgende wichtige einstellungen:
    Type= Snippet
    Show=Visible
    Status=Enabled
    Width=300
    Height=48

    Status Background Colors & Images
    Hide Background=No
    Hide Click Bg=Yes

    Command Title Settings
    ins weiße feld kommt rein: .vibrate.png
    Position=Center
    Title-Position=Hidden

    Command Results Settings
    Position=Hidden
    Results= [hier könnt ihr euch eine schriftart inkl größe und farbe auswählen, ich nutze Nokia Sans Maps 16]
    Position= Center Right
    Justify = Left

    Press & Progress Animation FX
    Frames=Disabled

    Update Policies & GPS/Location
    @ Startup,Desktop,Sight & Click = Yes
    @Multiclick, orientation= No
    @Interval=Disable
    Networt=unrelated

    Wenn ihr so weit seid, klickt ihr einmal auf Add Cmd und gebt einen aussagekräftigen, kurzen titel ein, bei mir wäre das zb custom_vibration
    Dann einmal speichern.
    Daraufhin klickt ihr auf Advanced, bei der Warnung ob ihr "Pro" wollt, mit ja bestätigen.
    In das obere weiße feld kommt dann das Skrip das ich bereitgestellt habe, im skript müsst ihr aber noch einige kleine anpassungen vornehmen:
    1. die beiden werte
    level1=60
    level2=120
    müsst ihr so anpassen das einer der beiden werte dem entspricht, der bereits in der mce.ini steht für die vibrationsstärke.
    dann muss in den beiden if-schleifen die 120/60
    bzw 60/120
    angepasst werden, ebenfalls zu den beiden werten.
    !!!Achtung!!!
    diese beiden werte dürfen sonst nicht in dieser zeile vorkommen, da sonst falsche änderungen vorgenommen werden!!!
    so darf zb die pausenzeit nicht genauso lang sein wie die vibrationsstärke vom zahlenwert. mein tipp: sucht euch in dem fall für die pausenzeit einen anderen wert, es reicht schon wenn +-1 genommen wird, also statt 120 nur 119 oder 121!

    Wenn das alles durch ist fehlt nurnoch das Bild welches dieses skript sogesehen überdeckt, ich lade hier mal mein vorzeitiges hoch, aber ich bastel bereits an einer guten, halbtransparenten 2. version davon.
    Hier die überarbeitete version:
    .vibrate.png
    Russe
    Das Bild gehört in das Verzeichnis /home/user/MyDocs/.images/queen_beecon_dir
    oder wenn ihr das Handy über massenspeicher anschließt:
    N900\.images\queen_beecon_dir

    Hoffe dem ein oder anderen hilft dieses Skript. Fragen und Anregungen sind herzlich willkommen, wenn jemand nicht klarkommt damit und es dennnoch gerne einsetzen möchte kann mich auch gerne persönlich kontaktieren in der woche bzw wenn ich im icq/msn online bin ;)
     
    #6 Russe89, 27. Feb. 2012
    Zuletzt bearbeitet: 27. Feb. 2012
Die Seite wird geladen...