Text in bestimmter Zeile abändern

F

flix

Jungspund
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
 
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
 
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
 
Code:
echo "Name:Pfad:Port:Status" | sed 's/\([[:alnum:]]*:\)\([[:alnum:]]*:\)\([[:alnum:]]*:\)\([[:alnum:]]*\)/\1\2\3bla/'


Name:Pfad:Port:bla
 
Zuletzt bearbeitet:
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
 

Ähnliche Themen

Sed: Bestimmtes Feld einer "Zeile mit mehreren Feldern" ergänzen

SED letzte Zeile löschen

SSH mit IPv6 auf Rechner im LAN mit IPv4

Problem mit Apache2 + MySQL Server

dbf-Tabellenwerte selektieren und erhöhen

Zurück
Oben