[BASH-Skript] Wildcard gesucht zum sed-Kommando

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von aragon19, 21.01.2010.

  1. #1 aragon19, 21.01.2010
    aragon19

    aragon19 Grünschnabel

    Dabei seit:
    21.01.2010
    Beiträge:
    9
    Zustimmungen:
    0
    Hallo zusammen.
    Habe ein Skript erstellt, was mir auf Dauer die Arbeit erleichtern soll.
    In dem Fettgedruckten Teil möchte ich eine Zeile ersetzen, bzw die letzte Zahl. Nun weiß ich nicht, welche Zahl dort defaultmäßig steht. Aber wenn ich dort den * hinsetze, dann löscht er die Zahl nicht, sondern schreibt die neue einfach davor und hängt die alte Zahl an. Es soll aber nur die neue Zahl dort stehen.

    Kann mir da einer weiterhelfen?

    Danke schon mal im voraus.
    Aragon19
     
  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. #2 bytepool, 21.01.2010
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    ich hab einen Moment gebraucht um zu verstehen was du willst, aber wenn ich dich richtig verstehe suchst du das hier:

    Code:
    COMMENT1="Maximal time step number: [0-9]*"
    
    In dem Fall sind es keine Wildcards sondern regulaere Ausdruecke, da duerfte dein Denkfehler liegen.

    mfg,
    bytepool
     
  4. #3 aragon19, 21.01.2010
    aragon19

    aragon19 Grünschnabel

    Dabei seit:
    21.01.2010
    Beiträge:
    9
    Zustimmungen:
    0
    In dem Fall macht er aber wieder denselben Fehler, dass er die alte Zahl hinten wieder ranhängt.
    Er soll aber die komplette Zeile löschen und die neue dahinsetzen.

    Habe jetzt eine Lösung gefunden, die aber sehr unschön aussieht. Außerdem behält er da den Zeilen einzug nicht bei.


    Also wenn jemand was eleganteres hat, ohne grep, dann bin ich darauf gespannt.
    Aragon19
     
  5. #4 floyd62, 21.01.2010
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Also, wenn ich das richtig verstehe, hast du in den Eingangsdateien irgendwelche Parameter mit den zulässigen Bereichen bzw. Werten zwischen '[' und ']' aufgeführt, und willst per sed jeweils die möglichen Werte durch die aktuellen ersetzen (und dabei die Klammern gleich mit los werden?).

    Das könnte etwa so laufen:
    Code:
    COMMENT1="\(Maximal time step number:\) \[.*\]"
    UNCOMMENT1="\\1 $1"
    sed -e "s/$COMMENT1/$UNCOMMENT1/" $FILE
    
    Wenn das nicht funzt, wäre evtl. hilfreich, wenn du ein konkretes Beispiel (Eingabe und was hinten rauskommen soll) hier einkippst.

    Gruss
     
  6. #5 aragon19, 22.01.2010
    aragon19

    aragon19 Grünschnabel

    Dabei seit:
    21.01.2010
    Beiträge:
    9
    Zustimmungen:
    0
    So hier dann mal das komplette Skript.
    Worauf ich hinaus will ist, dass ich nicht weiß, was nach dem Doppelpunkt für eine Zeichenfolge steht.
    Er soll einfach die komplette Zeile löschen und die neue Zeile inklusive meiner Variable einsetzen.
    So wie es da jetzt steht funktioniert es, aber es muss doch auch eleganter gehen.
    Aber bei allen anderen Lösungen, schreibt er immer noch die alte Zeichenfolge ans Ende.

    Trotzdem schonmal danke an alle Helfenden.

    Der Aragon
     
  7. #6 floyd62, 22.01.2010
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Hast du die Zeilen in meiner letzten Nachricht mal ausprobiert??

    Wenn dir die '['/']'-Klammern sowieso auch egal sind, und du einfach alles nach dem Doppelpunkt mit der Zahl in $1 ersetzen willst, sollte
    Code:
    COMMENT1="\(Maximal time step number:\) .*"
    UNCOMMENT1="\\1 $1"
    sed -e "s/$COMMENT1/$UNCOMMENT1/" $FILE
    
    doch schon genau das tun, was du willst ...

    Gruss
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

[BASH-Skript] Wildcard gesucht zum sed-Kommando

Die Seite wird geladen...

[BASH-Skript] Wildcard gesucht zum sed-Kommando - Ähnliche Themen

  1. Löschen mit Wildcard wenn Space im Pfad ist?

    Löschen mit Wildcard wenn Space im Pfad ist?: Hallo zusammen weder rm "/var/lib/vmware/Virtual Machines/Virtual Machine/"*.lck -R noch rm "/var/lib/vmware/Virtual...
  2. Erweiterte Forum Suchfunktionen (Unterstützung von Wildcards/Quotes)

    Erweiterte Forum Suchfunktionen (Unterstützung von Wildcards/Quotes): Hallo, Es wird ja "gelegentlich" auf die Suchfunktion vom Forum verwiesen. Daran ist im Grunde auch nichts auszusetzen. Aber leider ist die...
  3. Samba: HomeDir Wildcard?

    Samba: HomeDir Wildcard?: Hallo, ich wollte etwas nachfragen. Die Home-Shares werden über einen NetApp Filer und dem CIFS Protokoll auf einem Linux-Debian Client...
  4. Shell Wildcards Bug?

    Shell Wildcards Bug?: Hallo, ich wollte grade mit der Shell Dateien kopieren lassen, die nur mit einem Großbuchstaben beginnen. Also (jaja, mit ls kann man nicht...
  5. awstats - wildcards

    awstats - wildcards: hallo an alle, ich habe mir gerade awstats heruntergeladen und installiert. aber ich habe blasen auf meinem hirn und verstehe nicht, wie...