Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung Batch & Shell

GELÖST

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

Mitglied: mycroftone

mycroftone (Level 1) - Jetzt verbinden

09.05.2012, aktualisiert 18.10.2012, 6347 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 ..
Ähnliche Inhalte
Batch & Shell
Leerzeichen am Anfang und Ende löschen
gelöst Frage von Michael-24Batch & Shell17 Kommentare

Hallo zusammen, ich habe bereits einen über 4 Jahre alten Eintrag hier gefunden, was sich mit diesem Thema beschäftigt. ...

Ubuntu
Wie kann man 2 Textdateien vergleichen (OHNE SORTIERUNG!) und die gleiche Zeilen in einer Datei lassen und den Rest löschen?
gelöst Frage von takitanoUbuntu11 Kommentare

Ich habe 2 Textdateien mit deutschen Wörtern. Erste Datei ist nach Häufigket von Wörtern sortiert (frequency list) und zweite ...

Batch & Shell
Per Batch erste 15 Zeichen in jeder Zeile einer Textdatei lassen. Den Rest - löschen. Wie?
gelöst Frage von takitanoBatch & Shell9 Kommentare

Hallo an alle, ich habe folgendes Problem: in einer Texdatei habe ich ca. 60.000.000 Zeilen (453 MB) Jede Zeile ...

Batch & Shell
In allen Textdateien eines bestimmten Pfades die Zeilen x bis Ende löschen
gelöst Frage von SchlothBatch & Shell2 Kommentare

Hallo zusammen, ich möchte für alle Textdateien, die unter einem bestimmten Pfad (z.B. Z:\Test\) abgelegt sind, nur die ersten ...

Neue Wissensbeiträge
Router & Routing

PfSense als Addon auf QNAP

Information von magicteddy vor 10 StundenRouter & Routing2 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 17 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 22 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement22 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
gelöst Frage von Thomas2Windows Server10 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...

Sonstige Systeme
7-zip: Programm frägt nach Passwort erst bei einzelnen Dateien
Frage von freeskierchrisSonstige Systeme7 Kommentare

Guten Morgen, ich habe ein Problem beim Arbeiten mit 7-zip: Wenn ich die einzelnen Dateien zu einem Archiv verpacke ...