Text in bestimmter Zeile abändern

Diskutiere Text in bestimmter Zeile abändern im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo zusammen, habe eine Datei mit folgendem Aufbau: Name:Pfad:Port:Status Ich möchte nun mit meinem Script den Status ändern am Ende ändern....

  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. 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
     
  3. flix

    flix Jungspund

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

    dank dir
     
  4. 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
     
  5. #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
    
     
  6. #6 HeadCrash, 08.08.2009
    HeadCrash

    HeadCrash Routinier

    Dabei seit:
    16.05.2009
    Beiträge:
    483
    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
     
Thema:

Text in bestimmter Zeile abändern

Die Seite wird geladen...

Text in bestimmter Zeile abändern - Ähnliche Themen

  1. Textdatei filtern und löschen mit grep /sed

    Textdatei filtern und löschen mit grep /sed: Guten morgen liebe Forenmitglieder, da ich etliche Jahre in Sachen Linux pausiert habe und nun wegen beruflichem Wechsel wieder dort einsteige...
  2. 2 Spalten in EINER Textdatei GETRENNT addieren

    2 Spalten in EINER Textdatei GETRENNT addieren: Hey, bin ein ziemlicher Neuling in Sachen programmieren. Nun steh ich vor dem Problem, dass ich 2 Zahlenspalten inner Textdatei (vim) getrennt...
  3. 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...
  4. 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...
  5. [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...