Edit mit Maske? Maske anfertigen?

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
Tenmat
Junior Member
Junior Member
Posts: 7
Joined: 2006-06-27, 12:39 UTC

Edit mit Maske? Maske anfertigen?

Post by *Tenmat »

Hallo, zuerst einmal ....

Ich bin absoluter Newbi und hab dringend nen paar Fragen an euch.
Ich habe auf der Arbeit mit dem Total Commander zu tun, und muss mit diesem eine Datei editieren...


Diese Dateien sind immer so aufgebaut:


BLA BLA

Roodstock

10000000 [b]1[/b] 10000000000
10000000 [b]1[/b] 10000000000

22222222 [b]2[/b] 22222222222
22222222 [b]2[/b] 22222222222

Roodstock


Die Fett geschriebenen einzelnen Zahlen sollen einfach nur umgedreht werden, dh. die 1 wird ne zwei und die 2 ne 1.

Den technischen Hintergrund spare ich mir mal....

Wichtig ist das nur diese 1 u. 2 editiert werden, ab und zu sind auch 3 und 4 einzeln vorhanden, die müssen dann übergangen werden.


So meine eigentliche Frage, kann man das automatisieren? Bis jetzt musste ich jede Datei per Hand ändern, was recht aufwendig ist.


Ich danke im Vorraus......
User avatar
StickyNomad
Power Member
Power Member
Posts: 1933
Joined: 2004-01-10, 00:15 UTC
Location: Germany

Post by *StickyNomad »

2Tenmat

Hi und Willkommen!

Das geht am einfachstem mit dem Mehrfach-Umbenenn-Tool (STRG+M) oder im Menu 'Datei'

Falls die zu ersetzende Ziffer immer an derselben Stelle im Dateinamen steht, geht das folgendermassen:

0. Backup der Dateien machen (man weiss ja nie...)!
1. Alle Dateien markieren, in denen die 1 zur 2 werden soll
2. STRG+M drücken
3. In die Umbenenn-Maske folgendes eingeben: [N1-8]2[N10-], das Ergebnis wird als Vorschau angezeigt. Wenn es passt, Klick auf 'start', -> fertig

dann das Umbennn-Tool verlassen, und mit den restlichen Dateien obiges wiederholen, nur dann mit der Umbennnmaske [N1-8]1[N10-]

Im UmbenennTool kannst Du auch mal mit F1 in die Hilfe schauen, dort sind weitere Infos zu finden.

Das geht sicherlich eleganter und in einem Schritt mit Regulären Ausdrücken (damit hab ichs leider noch nicht so), aber auf die Schnelle gehts auch so, denke ich :wink: Wie gesagt, es sei denn, das zu ersetzende Zeichen steht an unterschiedlichen Stellen im Dateinamen, dan bleiben nur RegEx, aber hier gibts genug Leute, die das gut beherrschen...
User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Post by *Sheepdog »

Ähm, ich glaube, Tenmat möchte nicht die Dateinamen ändern, sondern den Inhalt der Dateien. Dafür kann man den TC nicht wirklich komfortabel benutzen.

Stattdessen empfiehlt es sich ein externes Tool zu benutzen, z.B. Inforapid Suchen und Ersetzen. Damit kann man Textdateien durchsuchen, ggf. mit Regular expressions, und dann die gesuchten Texte in allen gefundenen Dateien ersetzen.

sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
Tenmat
Junior Member
Junior Member
Posts: 7
Joined: 2006-06-27, 12:39 UTC

Post by *Tenmat »

ja, ich möchte den Inhalt der Dateien ändern, nicht den Namen der Datei.


RODSTOCK
004
029
001 000 2 500 00001 008 02290 +00051 +00000 +00000 +090 __________ 0
005 000 000 00000 00000 00000 100
000 000 000 0 0 002
00080 100 00180 100 00330 100 00480 100 00630 100 00780 100 00930 100 01080 100
01230 100 01380 100 01530 100 01680 100 01830 100 01980 100 02130 100 02230 100
002 000 2 500 00001 008 02290 +00151 +00000 +00000 +090 __________ 0
005 000 000 00000 00000 00000 100
000 000 000 0 0 002
00080 100 00180 100 00330 100 00480 100 00630 100 00780 100 00930 100 01080 100
01230 100 01380 100 01530 100 01680 100 01830 100 01980 100 02130 100 02230 100
003 000 2 500 00001 008 02290 +00213 +00000 +00000 +090 __________ 0
005 000 000 00000 00000 00000 100
000 000 000 0 0 002
00080 100 00180 100 00480 100 00780 100 01080 100 01380 100 01680 100 01980 100
02130 100 02230 100 00000 000 00000 000 00000 000 00000 000 00000 000 00000 000
004 000 2 500 00001 008 02290 +00377 +00000 +00000 +090 __________ 0
005 000 000 00000 00000 00000 100
000 000 000 0 0 002


die Roten 2en sollen zu 1en werden.....(das ist nur nen Dateiauszug)
Die Position ist immer dieselbe, nur wenn dann die 1en zur 2 werden is es anders
User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Post by *Sheepdog »

In besagten Inforapid SUchen & Ersetzen müsste als

Suchbegriff:([[:digit:]]{3} [[:digit:]]{3})( 2)
Dateimaske: <Dateimaske, z.B. *.txt oder Rodstock *.txt>
Verzeichnis: Pfad\zu\den\Dateien
Suchmethode:Mustervergleich

stehen.

Im Ersetzen Tab wäre dann:

Ersetze durch: 1
Ersetze: 2. Unterausdruck

einzutragen. Zunächst drückt man dann im Suche-Tab auf Start, dort werden dann alle Dateien angezeigt, die mit dme Suchausdruck gefunden wurden. Wenn die Auswahl stimmt, dann geht man in den Ersetzen-Tab und drückt hier auf Start.
Nun werden alle Stellen aufgelistet, die das Programm ersetzen würde. Nun kann man entweder jede Erstzung einzeln bestätigen, oder aber alle Ersetzungen ohne Nachfrage vornehmen lassen.

sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
User avatar
StickyNomad
Power Member
Power Member
Posts: 1933
Joined: 2004-01-10, 00:15 UTC
Location: Germany

Post by *StickyNomad »

:oops:

waren die Finger wieder schneller als das Hirn. Sorry.
Tenmat
Junior Member
Junior Member
Posts: 7
Joined: 2006-06-27, 12:39 UTC

Post by *Tenmat »

kannst du das nochmal genau erklären? ([[:digit:]]{3} [[:digit:]]{3})( 2)

was muss ich da noch eingeben bzw. wonach sucht er da genau?



Und was is eine reines text dokument? txt oder nich?

Word geht nich -> wird unbrauchbar.....aber bei txt, kommt der Warn Hinweis trotzdem?!
User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Post by *Sheepdog »

Also zunächst wegen des reinen Textdokuments:

Ein Word Dokument enthält neben dem reinen Text auch noch Steuerzeichen für die Formatierungen. So wird beispielsweise beginnende Fettschrift mit einem Byte 255+032 gekennzeichnet und das Ende des Fetten Bereichs mit byte 255 + 033 (Das habe ich mir jetzt ausgedacht, geht mir nur ums Prinzip). Da außerdem noch die Seitenformatierungen usw. ebenfalls im Dokment vorkommen, wird das Doklument unbrauchbar, sobald sich die Größe ändert (oder zufällig eine Formatierung den Suchtext enthält). Wenn Du tatsächlich nur den Textteil änderst, und zum Beispiel aus

"Hallo Oma!" "Hallo Opa!" machst, dann ist das Dokument auch weiter zu verwenden, weil keine Größenänderung passiert.

Suchen & Ersetzen macht sich nicht die Mühe, zu kontrollieren, ob Du wirklich ein reines Textdokument bearbeitest. Deshalb immer die Warnung. Da musst Du halt genau wissen was Du tust, weil sie dafür keine VErantwortung übernehmen.

Du kannst das aber testen, indem Du Dir die Datei einfach im Lister ohne Plugins ansiehst [Alt+Umsch+F3]. Dann sollte eben nur lesbarer Text erscheinen und keine kleinen Kästchen oder anderer Zeichenwirrwarr.

Nun zu dem regulären Ausdruck:
Neben der "Suchbegriff" Zeile hast Du 2 Buttons, einmal Operator, dann Zeichen. Dort kann man ganz bequem die richtigen Regulären Ausdrücke Auswählen. Dort habe ich also nach "Ziffer"=[[:digit:]] 3 mal={3} gesucht, dann ein Leerzeichen, dann noch einmal Ziffer, 3 mal, dann die "2".

Dann habe ich den Teil vor der 2 in Klammern gesetzt, damit dies als erster Unterausdruck gewertet wird, und die 2 ebenfalls, der 2. Unterausdruck. Dadurch wird zwar die gesamte Zeile gefunden:

Code: Select all

3Ziffern, ein Leerzeichen, 3 Ziffern, ein Leerzeichen, eine 2
aber es wird eben nur die 2 (der 2 Unterausdruck) ersetzt.

Hoffe das ist jetzt soweit klar.

sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
Tenmat
Junior Member
Junior Member
Posts: 7
Joined: 2006-06-27, 12:39 UTC

Post by *Tenmat »

Nee, ich bin zu blöd...glaub ich.....


Schreib mir mal den Code um die 2 in meinem Dok zu finden, hab ja weiter oben schon mal nen auszug gepostet.

Er soll nur die zwei finden, nur wenn sie alleine steht und wenn möglich, nur an dieser Position
User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Post by *Sheepdog »

Das habe ich doch oben schon getan:

Code: Select all

Suchbegriff:([[:digit:]]{3} [[:digit:]]{3})( 2)
Damit wird die 2 gefunden, die nach 2 dreiergruppen von Ziffern auftaucht, alles jeweils getrennt durch ein Leerzeichen. Also

([[:digit:]]{3} [[:digit:]]{3}) findet "000 012" und "345 039" usw.
( 2) findet " 2".

Dadurch das "([[:digit:]]{3} [[:digit:]]{3})" in Klammern steht, wird es als ein Suchausdruck verarbeitet( 1. Unterausdruck), während "( 2)" wegen der Klammern ebenfalls als Suchasudruck gilt (2. Unterausdruck). Deshalb musst Du im Ersetzen-Tab dann den 2. Unterausdruck durch die " 1" ersetzen lassen.

Bei mir hat das genau Dein Beispiel perfekt geändert.

Alle Klarheiten beseitigt?

sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
Tenmat
Junior Member
Junior Member
Posts: 7
Joined: 2006-06-27, 12:39 UTC

Post by *Tenmat »

So, mal ausprobiert. Aber dein Code stimmt nicht!

022 000 2

Weil er halt nicht nur die 2 findet, sondern auch das was davor steht!
an sich funktioniert es ja schon mal.....
User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Post by *Sheepdog »

Ja, natürlich findet er das, was davor steht, sonst wäre es ja nicht möglich, die 2 an genau dieser Position zu finden.

Der Trick besteht aber darin, dass man mit Hilfe der Klammern den gesamten Suchausdruck in 2 Teilausdrücke aufdröselt.

Und damit kann man beim Ersetzen sagen, dass eben nur die 2, nämlich der 2. Unterausdruck, ersetzt werden soll.

Bild 1
Bild 2
Bild 3
Bild 4
Bild 5
Bild 6
Bild 7

Du kannst natürlich auch einfach nach

Code: Select all

 2 
suchen, aber dann wird Dir auch eine Zeile mit:

012 023 022 043 2 123

gefunden, und das wolltest Du doch nicht, oder?

sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
Tenmat
Junior Member
Junior Member
Posts: 7
Joined: 2006-06-27, 12:39 UTC

Post by *Tenmat »

:idea: So, jetzt hab ichs.....muss mich da erstma reinfuchsen.....aber gut das hätte ich schonmal geschafft. die 2 is jetzt ne 1.

So nächstes Prob:

In dem Dok. stehen

027 000 2 500 das war vorher 027 000 1 500
028 000 2 500 das war vorher 028 000 1 500

da hab ich jetzt die 2 ersetzt mit der 1.

Ok, weiter: Im selben Dok. soll aber auch diese 1(unten) in eine 2 gewandelt werden, wenn ich jetzt ersetzte, wandelt er die oben schonmal gewandelten ja auch wieder zurück.

029 000 1 500
030 000 1 500


Kann ich das Problem lösen? Ich könnte hinterher die Umwandlung einzeln bestätigung und gucken, aber dann kann ichs auch gleich allein wandeln.
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Kann ich das Problem lösen?
- 1 ersetzen mit *dummy*
- 2 ersetzen mit 1.
- *dummy* ersetzen mit 2.

*dummy* ist eine eindeutige Zeichenfolge, die im Dokument nicht auftaucht.

Icfu
This account is for sale
Tenmat
Junior Member
Junior Member
Posts: 7
Joined: 2006-06-27, 12:39 UTC

Post by *Tenmat »

d.h.: Ich wandle die 1 erst in die zb 5, dann die 2 in die 1

und dann die 5 in die 2....


okay, klingt logisch, hätte man selber drauf kommen können,

Werde heut abend mal ein Dok. vollständig wandeln, wenn das alles klappt, dann küss ich euch die Füße.... :wink:


Thx schonma im Vorraus
Post Reply