• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Bash, Zeichen einfügen

chappert

Hacker
Hallo,

ich habe z.B. eine Datei xyz mit text drin
jetzt möchte ich nach einem beliebigen z.B "Hallo" Wort ein Zeichen einfügen
wie schaff ich das unter der bash???
 

spoensche

Moderator
Teammitglied
Code:
#!/bin/sh

suchwort=""
neueswort="${suchwort}xyz"

sed -e '1,$s/$suchwort/$neueswort/g'  xyz > xyz
 
OP
C

chappert

Hacker
klasse, danke

jetzt wäre noch toll wenn ich ganze Zeilen aus dieser datei löschen kann die ein bestimmtes wort enthalten
und als ausgabe alles bis auf die Zeile mit dem bestimmten wort bekomme

z.B. ne Datei mit folgendem inhalt

hallo welt.
hallo erde.
hallo universum.

dann den unbekannten befehl ausführen (die Zeile die gelöscht werden soll ist die mit dem wort: erde) und als ausgabe...

hallo welt.
hallo universum.

...bekomme
 
A

Anonymous

Gast
spoensche schrieb:
Code:
#!/bin/sh

suchwort=""
neueswort="${suchwort}xyz"

sed -e '1,$s/$suchwort/$neueswort/g'  xyz > xyz

Das geht überhaupt nicht, uA ist ein ganz böser Fehler drinn.
Achtung: eine Datei lesen und gleichzeitig mit Umleitungen der Bash in diese Datei schreiben endet immer mit einer leeren Datei

Ansonsten verhindert in dem sed Befehl die einfachen Hochkommas das die Bash dort die Variablen ersetzen könnte. Er sucht also nach "$suchwort" und ersetzt es falls er es findet durch "$neueswort"

bei und Shellvariablen und sed mal hier vorbeischauen


robi
 
OP
C

chappert

Hacker
na richtig wäre es so

sed -e '1,$s/'$suchwort'/'$neueswort'/g' xyz > xyz1

dann klaps auch mit dem nachbarn :)

aber weiß jemand was zu meiner 2ten frage
 
A

Anonymous

Gast
deine 2. Frage geht auch mit sed, ließ dich mal ein bisschen auf der Wikiseite ein.

Code:
sed -e '/erde/d' xyz > xyz1

robi
 
OP
C

chappert

Hacker
danke werd ich machen...

eine einzige sache hab ich aber noch

wie kann ich das aktuelle Datum -1 Tag Rechnen... im moment funktioniert folgendes gut

DATE=$(date +%Y%m%d);
ONEDAY=1;
let OLD_DATE=$DATE-$ONEDAY;

Problem unter anderem ist, wenn grad der erste des monates ist rechnet er einfach 20081101-1=20081100
was ja blöd ist weil ja das richtige ergebniss 20081031 wäre...

nach ner lösung hab ich gegoogelt aber keine gefunden :(
 
Oben