Text in bestimmter Zeile abändern

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von flix, 24.07.2009.

  1. flix

    flix Jungspund

    Dabei seit:
    20.07.2009
    Beiträge:
    19
    Zustimmungen:
    0
    Hallo zusammen,

    habe eine Datei mit folgendem Aufbau:

    Code:
    Name:Pfad:Port:Status
    Ich möchte nun mit meinem Script den Status ändern am Ende ändern. Das Problem was ich damit habe ist, dass ich bei SED nicht genau das Feld angeben kann welches er ändern soll und ich die Regexp nicht so gestrickt bekomme, dass er mir nicht vorher schon was ersetzt.

    Zur Zeit habe ich es so:

    sed "$reihe {s/:1/:0/}" $CONFIG > $CONFIG

    das würde aber bedeuten, fängt ein Port mit :1 an wird dieser in :0 geändert. Die Option g (global) würde zwar auch hinten den Status ändern, aber dann würde der Port nicht mehr stimmen.

    Mit awk könnte ich auf die Felder zugreifen allerdings weiss ich nicht, wie man dort die genaue Zeile angeben kann.

    Gruß fliX
     
  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. zst

    zst Foren As

    Dabei seit:
    06.09.2006
    Beiträge:
    95
    Zustimmungen:
    0
    Hallo flix,
    du kannst dem sed ja sagen, dass die 1 am Ende der Zeile steht, ein "$" anfügen:
    ... /:1$/:0 ...
    Aus $CONFIG zu lesen und dann gleich zu schreiben, halte ich für problematisch ...

    Gruss zst
     
  4. flix

    flix Jungspund

    Dabei seit:
    20.07.2009
    Beiträge:
    19
    Zustimmungen:
    0
    funktioniert :)

    dank dir
     
  5. flix

    flix Jungspund

    Dabei seit:
    20.07.2009
    Beiträge:
    19
    Zustimmungen:
    0
    hey, nun brauche ich wohl doch awk. es geht darum, dass in ein bestimmtes feld geschrieben werden soll, egal was vorher drin steht er soll den inhalt komplett löschen und etwas im script vorgegebens reinschreiben. mir fehlt es leider an 2 punkten. mit sed weiss ich wie man etwas bestimmtes überschreibt allerdings hab ich keine ahnung, wie man das feld angibt. und mit awk weiss ich wie man ein feld angibt aber weiss nicht, wie man den inhalt überschreibt.

    vielen dank schon mal im voraus

    bye
     
  6. #5 Aqualung, 07.08.2009
    Zuletzt bearbeitet: 07.08.2009
    Aqualung

    Aqualung Routinier

    Dabei seit:
    12.02.2008
    Beiträge:
    404
    Zustimmungen:
    0
    Code:
    echo "Name:Pfad:Port:Status" | sed 's/\([[:alnum:]]*:\)\([[:alnum:]]*:\)\([[:alnum:]]*:\)\([[:alnum:]]*\)/\1\2\3bla/'
    
    
    Name:Pfad:Port:bla
    
     
  7. #6 HeadCrash, 08.08.2009
    HeadCrash

    HeadCrash Routinier

    Dabei seit:
    16.05.2009
    Beiträge:
    482
    Zustimmungen:
    1
    Ort:
    Bayern
    Morgen,

    ist zwar schon gelöst, aber trotzdem

    Code:
    $ cat dummyfile
    eins:pfad1:1:1
    zwei:pfad2:2:1
    drei:pfad3:3:0
    vier:pfad4:4:1
    
    $ awk --assign oldpath=pfad2 --assign newpath=newpath  -F: '{ 
     if ($2 == oldpath) 
     { 
      print ($1":"newpath":"$3":"$4) } 
    else 
     {
      print ($0)  
     } 
    }' dummyfile
    eins:pfad1:1:1
    zwei:newpath:2:1
    drei:pfad3:3:0
    vier:pfad4:4:1
    
    mfg
    HeadCrash
     
  8. Anzeige

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

Text in bestimmter Zeile abändern

Die Seite wird geladen...

Text in bestimmter Zeile abändern - Ähnliche Themen

  1. Kontextmenü mit einem Skript verbinden

    Kontextmenü mit einem Skript verbinden: Abend, wenn ich z. B. eine simple Umwandlung eines Bildformates in ein anderes über das KDE-Kontextmenü (Servicemenü nennt es sich im KDE oder...
  2. Timestamp an Inhalt einer Textdatei anfügen

    Timestamp an Inhalt einer Textdatei anfügen: Hallo, ich als neuer, unerfahrener Nutzer von Linux und der bash hätte folgende Frage. Und zwar würde ich gerne mit einem command den Zeitstempel...
  3. [code]Text[/code] im Editor nicht mehr vorhanden

    [code]Text[/code] im Editor nicht mehr vorhanden: Hallo, früher gab es im Editor noch den Button für das erstellen von Code-Segmenten. Ich hab das für Konsolen-Output oder angabe von Befehlen...
  4. Textdatei zeilenweise in durchnummerierte Variablen schreiben

    Textdatei zeilenweise in durchnummerierte Variablen schreiben: Hi Leute, ich versuche folgendes Problem zu lösen. Ich möchte eine Textdatei einlesen und den Inhalt jeder Zeile in immer eine neue Variable...
  5. Artikel: Shell Command Injection - Wie fremder Text in das Terminal gelangt

    Artikel: Shell Command Injection - Wie fremder Text in das Terminal gelangt: Man möchte sicher nicht, dass ein Fremder einen Befehl in das Terminal eingibt. Und doch kann es genau dazu kommen, wenn Skripte auf dem System...