per batch zeilennummern in .txt datei löschen

Gast #2188462
Lesenswert?
• ▲
▼
Hallo miteinander,

ich möchte per batch aus einer Textdatei die Nummer vor dem ersten 
Semikolon entfernen und durch eine fortlaufende Nummer ersetzen.

1;3645153001;-25541;5239;Argon 100%
4;3645137001;-77935;9498;Argon 100%
10;3645137001;-77935;9498;Argon 100%
99;3645137001;-77935;9498;Argon 100%
103;3645137001;-77935;9498;Argon 100%

Würde mich freuen, wenn mir jemand dabei helfen kann.
Danke und Gruß
Müngg
Gast #2188474
Lesenswert?
• ▲
▼
Falls du mit "batch" die Windoof-Stapelverarbeitung meinst, damit kann 
ich nicht dienen.

Ansonsten:
1
#Perl
2
use strict;
3
use warnings;
4

5
my $nb=0;
6

7
foreach (<>)
8
{
9
  s/^[0-9]*;/$nb;/;
10
  print;
11
  $nb++;
12
}
Ein+Ausgabe über stdin+out.
Gast #2188495
Lesenswert?
• ▲
▼
Achso, sag das doch gleich. Ich dachte die eigentliche Verarbeitung muss 
mittels .bat geschehen.

Pack den Perl-Code in eine Textdatei, ändere die Endung in .pl und pack 
eine .bat-Datei dazu:
1
@echo off
2
perl convert.pl < liste.txt > ergebnis.txt
3
echo fertig
4
pause
Perl-Interpreter muss natürlich installiert sein, wenn er nicht gefunden 
wird Umgebungsvariable "PATH" ändern. Dateinamen müssen natürlich 
angepasst werden.
Persönliche Seite #2188598
Lesenswert?
• ▲
▼
Mit mehreren Schritten geht es auch mit 
Windows-Kommandozeilen-Bordmitteln.

Erster Schritt:
Inhalt der ersten Spalte entsorgen
1
FOR /F "tokens=2,* delims=;" %i in (quelle.txt) do @echo ;%i;%j >> temp1.txt

Ergibt:
1
;3645153001;-25541;5239;Argon 100%
2
;3645137001;-77935;9498;Argon 100%
3
;3645137001;-77935;9498;Argon 100%
4
;3645137001;-77935;9498;Argon 100%
5
;3645137001;-77935;9498;Argon 100%

Zweiter Schritt:
aufsteigende Zeilennummern voranstellen
1
findstr /n ; temp1.txt > temp2.txt

Ergibt:
1
1:;3645153001;-25541;5239;Argon 100%
2
2:;3645137001;-77935;9498;Argon 100%
3
3:;3645137001;-77935;9498;Argon 100%
4
4:;3645137001;-77935;9498;Argon 100%
5
5:;3645137001;-77935;9498;Argon 100%

Dritter und letzter Schritt:
Doppelpunkt loswerden
1
FOR /F "tokens=1,* delims=:" %i in (temp2.txt) do @echo %i%j >> ziel.txt

Ergibt:
1
1;3645153001;-25541;5239;Argon 100%
2
2;3645137001;-77935;9498;Argon 100%
3
3;3645137001;-77935;9498;Argon 100%
4
4;3645137001;-77935;9498;Argon 100%
5
5;3645137001;-77935;9498;Argon 100%

Ganz wichtig hierbei: Die Dateien temp1.txt und ziel.txt müssen vor 
Aufruf leer sein bzw. nicht existieren, da der for-Output nur angehängt 
wird.


Nein, elegant ist was anderes.
Gast #2189128
Lesenswert?
• ▲
▼
Es geht auch mit Excel falls noch andere Funktionen nötig sind.

Mach aus Deiner.txt eine Deiner.csv, lies diese in Excel und lass die 
erste Spalte weg oder numeriere/bearbeite sie und speichere sie als 
neue.csv
und ren neue.csv neue.txt
#2189937
Lesenswert?
• ▲
▼
wenn du sowas öfters machst, ist trotzdem zu empfehlen, dass du dich mit 
den typischen Linux-Kommandozeilentools wie grep, sed, xargs 
außeinandersetzt (--> GnuWin32) oder dich mit Perl beschäftigst.
hier kommt man auch nur mit den Grundlagen ( skalar, array, hash, 
Dateihandling, Schleife, Reguläre Ausdrücke) sehr weit. ist dann 
vielleicht oft nicht das optimalste oder schnellste, aber meistens 
reicht es auch.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.