Txt replace tool für die kommandozeile gesucht?

  • #1
M

MS Master

Bekanntes Mitglied
Themenersteller
Dabei seit
03.03.2004
Beiträge
84
Reaktionspunkte
0
Hi all,

kennt evt. jemand von euch eine möglichkeit, auf der Kommandozeile, genauer per Batch, in einem Txtfile eine Zeile zu suchen und diese zu ersetzen.

Mittels findstr habe ich zwar die möglichkeit nach einem String zu suchen, aber leider keine möglichkeit den gefundenen String ersetzen zu lassen.

Bin für jeden Tip dankbar, wie das zu ermöglichen währe.
 
  • #3
Danke erst mal für den Link.

Nur leider hast du es wohl falsch verstanden was ich suche. Den zum reinen suchen/ersetzen benutze ich Beyond Compare/UltraEdit, die können das beide etwas leistungsfähiger.

Ich suche jetzt aber eine möglichkeit, etwas per Batch ersetzen zu können, damit das eine OneClick Lösung wird.
 
  • #4
Hi,

In den für Windows ist auch sed enthalten. Etwas besseres dürftes Du IHMO nicht finden ;-)

Gruß
Sven
 
  • #6
Naja, Perl ist nichts, den dafür bräuchte ich auf jedem PC wieder einen Perl interpreter. Sonst hätte ich es schon längst in PHP gemacht, da weis ich wie das geht ;)

Hm, zu sed gibts wohl leider keine Doku, hab zumindest nichts gefunden. Vom Prinzip her währe das schon ok, ein kleines Prog neben die Batch zu packen ist ok.
 
  • #8
Ok, danke, soweit ist das jetzt klar.

Was ich leider nicht gefunden habe, ist wie ich einen Zeilenumbruch darstellen müsste.

Also mal als Beispiel:

Ich suche
Code:
Test
und möchte das ersetzen gegen
Code:
Test1
Test2
, wie bekomme ich dann einen Zeilenumbruch dargestellt?

Ist das der standard code \r \n , oder müsste da etwas anderes benutzt werden?
 
  • #9
jo, geht mit \n hier ein kleiner test: in der textdatei steht als string wintotalforum

C:\DOKUME~1\Hugo\Desktop>cat test.txt
WintotalForum

C:\DOKUME~1\Hugo\Desktop>cat test.txt | sed s/Wintotal/Wintotal\n/g
Wintotal
Forum


greetz

hugo
 
  • #10
Hi,

danke für dein beispiel. dazu mal eine Frage, was soll das g am schluss ?

Ist das nur ein versehen von dir, oder hast du das mit einer bestimmten absicht getan?

Habe dann mal was einfaches versucht, leider erfolglos :

Code:
sed s#bla#Test\nTest2# <Test.txt >Test.NEW

Läuft soweit eigentlich schon ganz gut, mit dem kleinen fehler, das nacher in der Datei folgendes steht:

Code:
TestnTest2
blub

statt
Code:
Test
Test2
blub

Wo liegt da jetzt der fehler? Achja, ich benutze Windows 2000
 
  • #11
g = global, das gibt dem substitutebefehl den auftrag, im ganzen dokument diesen string durch den anderen zu ersetzten, ist in dem einzeiler natürlich trivial, bei einem großen dokument aber eminent effektiv ...

greetz

hugo
 
  • #12
ok, danke für den hinweis.

Das einzigste problem ist jetzt, das er bei mir das \n offensichtlich nicht mag.

Wenn ich exakt deine Zeile nehme, kommt auch dort WintotalnForum raus :'(
 
  • #13
welche sed version verwendest du? ich hab auch w2k im einsatz und sed -V zeigt mir GNU sed version 4.0.7 an, vielleicht verwendest du ´nen anderen sed ...

greetz

hugo
 
  • #14
Ok, habs hinbekommen, das muss unter Windows wohl etwas anderst ausehen :

Code:
sed -e /bla/a\ -e Eine neue Zeile

Achja, sed zeigt mir 3.02 an.

Woher bekomme ich die neueste Version, bin dem Link weiter oben gefolgt, aber das scheint ja dann eine alte Version zu sein

Edit: Ok, habe die neue Version gefunden. Die kann wohl schon mehr, aber der Code oben reicht mir erst mal, da ich nur eine Zeile suche, um danach eine neue Zeile einzufügen.
 
  • #15
Und doch noch ein Problem gefunden :

Ich möchte hinter
Code:
Test = Test 1
ein
Code:
Test = Test 2
setzen.

Nur, um die Leerzeichen richtig zu erfassen, muss ich die ja in setzen, aber dann findet er die anderen nicht mehr.

Habe sowohl
Code:
sed -e /Test = Test 1/a\ -e Test = Test 2
als auch
Code:
sed -e /Test = \Test 1\/a\ -e Test = \Test 2\
versucht, aber leider erfolglos.

Hat da jemand einen Tip, woran es noch liegen könnte
 
  • #16
Hat sich erledigt, habe den fehler gefunden :)
 
Thema:

Txt replace tool für die kommandozeile gesucht?

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben