Texteditor

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Nokman
Beiträge: 146
Registriert: 02.09.2006 01:44:31

Texteditor

Beitrag von Nokman » 10.11.2007 01:26:04

Hallo mit welchen und vorlaem wie könnte ich es hinbekommen das ich einen übergeben kann das er direkt in eine datei schreibt in die angegebene zeile

zb
-l 5 textdatei.txt "das ist der Text der in Zeile 5 ersetzt werden soll"

ich hoffe man versteht wie ich es meine vieleicht kann mir jemand einen tip dazu geben (das es geht weis ich wir sind ja unter Linux)

Benutzeravatar
Columbus
Beiträge: 1051
Registriert: 30.04.2002 15:25:02
Wohnort: Mainz
Kontaktdaten:

Beitrag von Columbus » 10.11.2007 02:11:49

Ich bin mir nicht sicher was Du meinst aber wenn Du einen Editor suchst den Du mit Skripten steuern kannst, dann wäre sed das richtige. Das ist keine Partei sondern wirklich ein Editor

http://de.wikipedia.org/wiki/Sed_(Unix)

Gruss Christian
Die größten Kritiker der Elche,
waren früher selber welche.

F.W. Bernstein

Nokman
Beiträge: 146
Registriert: 02.09.2006 01:44:31

Beitrag von Nokman » 10.11.2007 03:28:00

jo ich werde mir gerade mal sed anschauen

um es anders zu erklären ich möchte mit hilfe von einen Konsolen befehles aus direkt einene Zeile in einer Datei ersetzten

ZB


Code: Alles auswählen

Auto
Baby
Mama
Oma
Opa
Tante
6 Zeilen nun möchte ich gerne Zeile 3 Ersetzen also Mama durch Papa

Code: Alles auswählen

Auto
Baby
Papa
Oma
Opa
Tante
nun sollte es so aussehen aber ohne das ich die datei selber öffnen muss um es eben mit hilfe eines scriptes machen kann.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 10.11.2007 08:11:05

Meinst du so?

Code: Alles auswählen

daniel@daniel-laptop:/tmp$ cat datei.test
Auto
Baby
Mama
Oma
Opa
Tante
daniel@daniel-laptop:/tmp$ cat datei.test | sed -e 's/mama/Papa/gi'
Auto
Baby
Papa
Oma
Opa
Tante
Oh, yeah!

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 10.11.2007 09:18:06

...oder meinst Du es so?

Code: Alles auswählen

fuzzy@deb:~$ cat textdatei.txt
Auto
Baby
Mama
Oma
Opa
Tante

fuzzy@deb:~$ sed -i 's/Mama/Papa/' textdatei.txt

fuzzy@deb:~$ cat textdatei.txt
Auto
Baby
Papa
Oma
Opa
Tante
die "-i" Option ist manchmal etwas "heftig", da kann ungefragt einiges schiefgehen... :wink:
http://de.linwiki.org/wiki/Linuxfibel_- ... euge_-_Sed

Gruß fuzzy

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 10.11.2007 12:04:20

Stimmt, die i Option war zum direkten Ändern der Datei.
Hatte zwar noch im Kopf, dass es so eine Option gibt, wußte aber nicht mehr wie sie hieß und wie man sie anwenden muss.

Der Link ist auch ganz interessant und hilfreich!
Oh, yeah!

Nokman
Beiträge: 146
Registriert: 02.09.2006 01:44:31

Beitrag von Nokman » 10.11.2007 20:49:12

das mit -i hbe ich schon in der hand gehabt nur kommt der gegriff "mama" in der datei vieleicht 20 mal vor aber ich will ihn nur in der einen bestimten zeile abändern

Daher brauche ich etwas um ihm zu sagen zeile 4 ersetzen durch papa egal was da vorher stand

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 10.11.2007 23:54:00

So ersetzt du in Zeile 3 Mama durch Papa:

Code: Alles auswählen

$ cat datei 
Auto
Baby
Mama
Oma
Opa
Tante
$ cat datei | sed -e 3s/Mama/Papa/
Auto
Baby
Papa
Oma
Opa
Tante 
So ersetzt du die ganze Zeile 3, egal wie lang sie ist durch Papa:

Code: Alles auswählen

$ cat test
Auto
Baby
Mama bla bla
Oma
Opa
Tante 
$ cat test | sed -e 3s/^.*$/Papa/
Auto
Baby
Papa
Oma
Opa
Tante 

Nokman
Beiträge: 146
Registriert: 02.09.2006 01:44:31

Beitrag von Nokman » 11.11.2007 00:36:23

Ich bedanke mich viel mal bei dir auch wenn ich sed immer noch abschrekend finde da es so nicht kompliziert sondern umfangreich ist

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 11.11.2007 10:52:36

Weiß zwar nicht genau wie man es umsetzt, aber ich meine man könnte auch ab dem ersten Treffer für /pattern/ nur diesen ändern und wenn der /pattern/ nochmals auftritt, dieser nicht mehr beachtet wird.
Oh, yeah!

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 11.11.2007 14:10:07

Code: Alles auswählen

fuzzy@deb:~$ cat textdatei.txt
Auto
Baby
Mama
Oma
Opa
Tante
Auto Baby Mama Oma Opa Tante
Mama Auto Baby Oma Opa Tante

fuzzy@deb:~$  sed '0,/Mama/s/Mama/Papa/' textdatei.txt
Auto
Baby
Papa
Oma
Opa
Tante
Auto Baby Mama Oma Opa Tante
Mama Auto Baby Oma Opa Tante
...naja ich hatte da ein paar Tipps bekommen, das wird bestimmt nicht mit jeder sed-Version gehen und ob sich der Aufwand in diesem Falle lohnt ist auch noch die Frage. :wink:

Gruß fuzzy

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 11.11.2007 15:50:56

Ach ja stimmt. Von Zeile 0 bis /Pattern/ und dann die Ersetzung durchführen.

So ging dass ganze nochmal...
Oh, yeah!

Benutzeravatar
Leonidas
Beiträge: 2032
Registriert: 28.04.2003 13:48:49
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Beitrag von Leonidas » 12.11.2007 22:05:59

Nokman hat geschrieben:Ich bedanke mich viel mal bei dir auch wenn ich sed immer noch abschrekend finde da es so nicht kompliziert sondern umfangreich ist
Also ich würde es kompliziert nennen, mein letzter `sed`-Befehl (den ich zugegebenermaßen so gebaut habe um grep und tac zu ersetzen) war

Code: Alles auswählen

sed '/^$/d;s/\([^:]*\): \(.*\)/<\1> \2/;1!G;h;$!d' chatlog
Wäre viel einfacher gewesen, wenn sed non-greedy Regex unterstützen würde.

Mit einer Programmiersprache hätte ich das simpler hinbekommen...
Wir wollten einen Marsch spielen, aber wir hatten nur Xylophone.

Antworten