Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Leerzeichen am Ende eine Zeile Löschen. Leerzeichen im Rest der Zeile aber so bestehen lassen

Frage Entwicklung Batch & Shell

Mitglied: mycroftone

mycroftone (Level 1) - Jetzt verbinden

09.05.2012, aktualisiert 18.10.2012, 5974 Aufrufe, 8 Kommentare

Ich habe eine Datei die mit mehreren Spalten. Durch Leerzeichen sind die Einzelnen Einträge voneinander getrennt.
Es sind entweder 4 oder 5 Spalten. Und danach habe ich noch ein paar Leerzeichen.
Weil ich vorhere in manchen Zeilen was abschneiden mußte.

Jetzt möchte ich aber die Leerzeichen am Enden weg haben.

Ein
01.
for /F "Tokens=1-5 " %%b in (C:\org.log) do  ( echo %%b,%%c,%%d,%%e,%%f >> C:\neues-org.log )

Funktioniert ja nicht weil dann sind ja auch die Leerzeichen dazwischen weg.

ich habe mir schon gedacht ich nehm jede Zeile untersuch dort das letzt Zeichen und wenn es ein Leezeich ist nehem ich es weg.
Aber wie ich das Batch Programmiertechnis Umstzte weiß ich nicht.

Kann mir Jemand dabei helfen.
Mitglied: mak-xxl
09.05.2012, aktualisiert 18.10.2012
Moin mycroftone,

etwa so für schließende (und führende!) Leerzeichen in einer Zeile:

01.
@echo off 
02.
for /f "delims=" %%i in (C:\org.log) do @call :trim %%i 
03.
goto :eof 
04.
:trim 
05.
echo [%*] >> C:\org.neu 
06.
goto :eof
Die Klammern in Zeile 5 für den Normalbetrieb entfernen - nur zur besseren Demonstration.

Der Dank geht an Biber - weil hier.

Freundliche Grüße von der Insel - Mario
Bitte warten ..
Mitglied: ctietje
09.05.2012 um 21:06 Uhr
ich mache so etwas so:
1. zunächst alle Stellen vielen Leerzeichen ungerader Zahl durch suchen & ersetzen gegen nichts: entfernt alle größeren Gruppen mit drei Zeichen restlos.
2. Immer so weiter bis zu kleinen Zahlen wie drei Leerzeichen
2. dann haben wir nur noch gerade Anzahlen von Leerzeichen. Die entfernen durch suchen & ersetzen zweier Leerzeichen gegen nichts.

OK?
Bitte warten ..
Mitglied: bastla
09.05.2012 um 21:23 Uhr
@Mario
Das Leerzeichen vor ">>" ist allerdings gerade in diesem Fall besonders kontraproduktiv - besser so:
>>C:\org.neu echo [%*]
- und darauf achten, dass es nicht am Ende dieser Codezeile noch eines gibt ...

Grüße
bastla
Bitte warten ..
Mitglied: mak-xxl
09.05.2012 um 21:42 Uhr
@bastla,

ja also die leergezeichneten Trittbrettfahrer und meiner einer - ein gefährliches Gespann.
Danke für die Korrektur.

Einen schönen Feierabend und freundliche Inselgrüße - Mario
Bitte warten ..
Mitglied: gammaplayer
10.05.2012 um 06:50 Uhr
Machst du das denn öfter und rechtfertigt es somit überhaupt ein Kommandozeilenscript?
Wenn du das öfter machst wäre n Skript natürlich sicherlich besser für ne automatische Verarbeitung.

Für nen Einzelfall würde ich in meinem Editor einfach das letzte Leerzeichen + Zeilenumbruch durch einen Zeilenumbruch ersetzen und gut ist.
Mit sed wäre das auch kein Problem ;)
Und ich nehme an, dass das mit nem Powershell-Skript auch kein Ding sein sollte.

Nur mal so als Denkanstoß.

Mit wilden Algorithmen zu gerader Anzahl von Leerzeichen tust du dir glaube nichts Gutes.

Achso ich sehe gerade dass am Ende mehrere Leerzeichen sein können, auch kein Ding mit regulären Ausdrücken.
Sollte in guten Texteditoren kein Thema sein und auch z.B. in der Powershell nicht, die sollte mit sowas umgehen können.
Bzw. könnte ich im Editor einfach Spaltenweise markieren und so die Leerzeilen loswerden, vorausgesetzt die Spalten sind gleich breit oder wurden durch Tabs getrennt.
Was mich zu der Frage führt woher die Daten überhaupt kommen und ob man nicht an der Daten erzeugenden Quelle schon für Verbesserungen sorgen könnte.

Fragen über Fragen... ist glaube noch zu früh. Mach mir schonwieder zuviele Gedanken über sone simple Sache. :D


Naja egal.... macht ihr mal


P.S. regulärer Ausdruck für ersetzen von Whitespace am Ende einer Zeile wäre dann "[[:s:]]*$" mit "\r\n" ersetzen. (ohne Änführungsstriche, Syntax kann sich unterscheiden, je nachdem wie/wo eingesetzt) Das ist jetzt Perl-Syntax innerhalb von UltraEdit. [[:s:]] = beliebiger Whitespace-Character, * = vorheriges Zeichen beliebig oft, $ = Zeilenende, "\r\n" = Carriage Return + Line Feed = neue Zeile unter Windows.
Bitte warten ..
Mitglied: pieh-ejdsch
10.05.2012 um 14:14 Uhr
moin mycroftone,

... das Batch Programmiertechnis Umstzte ...
Wie Bugs Bunny?

Immer 5 tokens? Dann Schreibe statt Kommata die Leerzeichen.
Wenn nur vier oder fünf Tokens sein sollen, prüfe auf ein 5. Token.
01.
@echo off 
02.
setlocal disabledelayedexpansion 
03.
if not exist "%~1" echo Datei nicht gefunden. 1>&2 &exit /b 1 
04.
(for /f "usebackq tokens=1-5 delims= " %%a in (%1) do if "%%e" neq "" (echo %%a %%b %%c %%d %%e 
05.
  ) else echo(%%a %%b %%c %%d 
06.
) >"%~dp1neues-%~nx1"
Sonst lass die Unterroutine den Müll die Leerzeichen am Zeilenende entsorgen:
01.
@echo off 
02.
setlocal disabledelayedexpansion 
03.
if not exist "%~1" echo Datei nicht gefunden. 1>&2 &exit /b 1 
04.
findstr /n "^" %1 1>"%~1.tmp" 
05.
06.
for /f usebackqdelims^= %%a in ("%~1.tmp") do (set "Line=%%a" 
07.
  call :Sub 
08.
))>"%~dp1neues-%~nx1" 
09.
if exist "%~1.tmp" del "%~1.tmp" 
10.
exit /b 0 
11.
:Sub 
12.
if "!OS!" neq "%OS%" setlocal enabledelayedexpansion 
13.
if "!Line:~-1!" equ " " set "Line=!Line:~ 0, -1!" &goto :Sub 
14.
echo(!Line:*:=! 
15.
goto :eof
[Edit] löschen der tmp-datei nachgetragen. [/Edit]

Gruß Phil
Bitte warten ..
Mitglied: mycroftone
10.05.2012 um 14:51 Uhr
Vielen Dank für die zahlreichen Vorschläge.

Ich werde es morgen ausprobieren.

I
Bitte warten ..
Mitglied: mycroftone
11.05.2012 um 13:02 Uhr
Danke an mak-xxl und Biber die Lösung funktioniert genauso wie gewünscht.

Danke auch an pieh-ejdsch für die UMsetzung meiner Idee.
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Batch & Shell
gelöst Poweshell Script soll String ersetzen und die leere Zeile löschen (4)

Frage von Mars123 zum Thema Batch & Shell ...

Debian
gelöst ISPCONFIG löschen. client-ordner lassen sich nicht löschen (3)

Frage von Moddry zum Thema Debian ...

VB for Applications
gelöst Vbscript bestimmte Zeile ungeachtet der Nummerierung löschen (4)

Frage von aletri zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...