String von einer Datei rauslöschen btw. editieren

E

El Kassem

scan my network and die
Hallo @alle
Ich brauch wieder mal kurz eure Hilfe.
Ich habe z.B. eine Datei mit folgenden Inhalt

Christian
Robert

ich will nun den string von der datei per Shellskript "löschen"
Also logisch so :

Robert > löschen

Falls das nicht geht, möchte ich gern den String editeren mit nichts.

also so ..

Robert > " " (also mit einer leertaste ersetzen..was ja den wert 0 in meinem Fall entspricht..)


Danke @all
 
Hi,

grep oder sed sind deine Freunde. Was du konkret brauchst, haengt von den konkreten Daten ab.
Viele Wege fuehren nach Rom.

mfg,
bytepool
 
Oke dann werd ich genauer :
Folgenden Befehl habe ich mir "erarbeitet" :
sed "s/$VARIABLE/''/g" /uac/DATEI

so der ebfehl sollte folgendes tun..
er soll die Variable mit ' ' ersetzen in der Datei

LIEBER wäre es mir wenn er es komplett rauslöscht, falls das geht ?

Ich hoffe ihr (du) weißt was ich meine ?
 
Hi,

LIEBER wäre es mir wenn er es komplett rauslöscht, falls das geht ?

Wenn du den String mit einem leeren String ersetzt, loescht du den String ja schon. Aber falls du meinst, dass du die ganze Zeile geloescht haben willst, dann ginge das z.B. mit grep (mit der komplement option) und redirection. Wahrscheinlich geht es auch direkt mit sed, was wohl effizienter waere, aber ich kenn mich mit sed selber nicht wirklich aus, der substitution Befehl reicht mir meistens. ;)

mfg,
bytepool
 
Hmm.. Ich finde nichts in der manuel .. (man grep) auch nicht unter grep --help..
??
Könntest du mir vllt das Beispiel an meinen obigen anpassen (mit grep..das wäre ja egal :) )
 
Code:
grep -v "$VARIABLE" /pfad/zur/datei|cat > /pfad/zur/datei
Kann grep das auch direkt wieder in die Datei schreiben (wie sed mit der -i-Option)?
 
Zuletzt bearbeitet:
sorry... ich werd vielleicht lästig...
Aber .. Wo kann ich in deinen Code das "Muster" eingeben also :

TEXT und TEXT1 (der text der editet werden soll)
Und warum elite ich das ganze auf eine Datei um ?
Ich will in der Datei bleiben.
Mein Skript ist von der Datei abhängig.

PS: Zusätzliche ist TEXT eigendlich eine Variable also $TEXT
 
Hm, also was willst du genau machen? Mein Beispiel würde die Datei auslesen, alle Zeilen, die auf das Muster aus $VARIABLE zutreffen, ausfiltern und alles wieder in die Ursprungsdatei zurückschreiben.
 
Das wird die Datei leeren Tblue... (Und dazu ist da noch ein cat zuviel *hust*)

Mit sed geht das mit dem "d" (für delete) Befehl:
Code:
sed -e '/Robert/d' infile

Wenn man das mit grep macht, sollte man den -F switch benutzen..
@TE: Mit grep kann man nicht wirklich Muster-Ersetzungen machen, du hast ja auch schließlich gesagt, dass die Zeile einfach nur gelöscht werden soll..
 
Das wird die Datei leeren Tblue...
Ja, ohne das cat. Mit nicht:
Code:
[tilman@h2g2-42:~/tmp]% cat test; echo -----; grep -vi hans test|cat > test; cat test;
Hermann
Elke
Hans
Josef
-----
Hermann
Elke
Josef

//edit: Hm, das klappt allerdings nicht immer. Die Methode mit sed ist dann wohl besser.
 
Zuletzt bearbeitet:
Gut.. es geht nicht ! :)
Hier das Script.

function bannuserdel
{
echo "Welchen User wollen Sie von der Bannliste entfernen?"
read bannuserdel
echo "Der User $bannuserdell soll von der Bannliste entfernt werden?"
echo "[J] - Ja"
echo "[N] - Nein"
read bannuserdelfrage
if [ $bannuserdelfrage == "J" ]
then
sed -e "/$bannuserdel/d" /uac/bannlist
elif [ $bannuserdelfrage == "j" ]
then
sed -e "/$bannuserdel/d" /uac/bannlist
elif [ $bannuserdelfrage == "N" ]
then
exit
elif [ $bannuserdelfrage == "n" ]
then
exit
else
echo "Sie können nur zwischen Ja und Nein auswählen."
fi
echo -e "\033[0;32mUser wurde von der Bannliste gelöscht.\033[0m"
bannuser
}


Vllt könnt ihr mein Problem nun feststellen ??
 
@El Kassem: sed schreibt auf stdout. Benutz den -i switch (wenn vorhanden) oder besser: benutz eine temporäre Datei...
Um herauszufinden, wie du das machst: benutz dein Hirn.

@Tblue: bei mir wird die Datei so geleert. Welche shell benutzt du denn? (ich benutz bash; das Prozentzeichen in deinem Prompt sieht irgendwie so nach csh aus..)
 
@Gott_in_schwarz, fast, ich benutze die zsh. Aber wie schon gesagt, dass klappt auch nicht immer; manchmal wird die Datei geleert, manchmal nicht.
 
2. Frage
Ich möchte mit einem Skript. eine Varibale ($USER) in eine Datei schreiben
Wenn ich das aber like this tue :
echo " $USER " >> datei
und ich das skript ausführe..
schreibt mir der in die Datei nicht :
$USER
sondern root (oder mit welchen user ich halt angemldet bin..)

Frage ist, wie geht das ?
Das ich die Variable per Skript reinschreiben kann.
(Die Variable sollte auch so bleiben hat mit etc/Profile zu tun... also bei jedem User beim einloggen ändert sich die Variable )
 
Nutze escape um $USER zu erzeugen.
Code:
echo "\$user" >/path/datei
 

Ähnliche Themen

Newbie sucht Hilfe: Zahl aus Datei mit grep/cut/sed lesen und schreiben?

Samba Ordner&Rechte struktur Hilfe!

[PERL] Mit Regex kompletten String durchsuchen und ersetzen

Apache2.0 zeigt Bilder von gelinkten Verzeichnissen anderer Partition/ramdisk nicht

String in mehreren Dateien ersetzen

Zurück
Oben