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

gelöst Mit Linux Konsole Absatz 0A in Dateien suchen und ersetzen

Mitglied: OIOOIOOIOIIOOOIIOIIOIOOO

OIOOIOOIOIIOOOIIOIIOIOOO (Level 1) - Jetzt verbinden

24.05.2019 um 15:57 Uhr, 357 Aufrufe, 7 Kommentare

Moin,

jedes mal das gleiche. Ein mal im Jahr brauche ich einen Script und jedes mal stoße ich auf neue Probleme mit alten Wurzeln.

Die Absätze…..

https://administrator.de/forum/linux-ende-datei-leerzeile-einf%C3%BCgen- ...

Ich habe eine Datei. Mit Adressen. Dummerweise gab es mal einen Entwickler Team welches ein PayPal Modul entwickelte, bei dem die Adresse bei einem Zusatz (also zweitem Feld für Straße) die beiden Felder Trennt nur 1 und zwar laut dem Hexeditor ein Absatz „0A“ Alle anderen werden ganz normal und vorbildlich mit „0D 0A“ umgesetzt.

hexmex - Klicke auf das Bild, um es zu vergrößern

Nun muss ich für meinen anderen Script die Datei vorbereiten und diesen Zeilenumbruch entfernen und mit zum Beispiel einem Leerzeichen oder Pipe ( | ) ersetzen.

Ich kann jedoch diesen Absatz in der Konsole weder finden, noch ersetzen.

HEX:

01.
46 69 72 6D 61 31 3B 4E 61 6D 65 31 3B 4E 61 6D 65 32 3B 53 74 72 61 DF 65 31 3B 53 74 72 61 DF 65 32 3B 50 4C 5A 3B 4F 72 74 3B 52 45 2D 4E 75 6D 6D 65 72 3B 54 65 6C 4E 75 6D 6D 65 72 3B 65 72 76 69 63 65 3B 4B 6F 6D 6D 65 6E 74 61 72 3B 4C 61 65 6E 64 3B 42 65 73 74 65 6C 6C 6E 72 0D 0A 46 69 72 6D 61 3B 4D 2E 20 4D 75 73 74 65 72 6E 61 6D 65 3B 3B 41 6D 20 55 66 65 72 6C 61 6E 64 20 31 32 33 2C 20 47 65 62 2E 20 41 34 0A 5A 75 73 61 74 7A 6B 6F 6D 6D 65 6E 74 61 72 3B 3B 31 32 33 34 35 3B 4D FC 6E 63 68 65 6E 3B 42 4C 41 42 4C 41 3B 3B 3B 3B 44 45 3B 42 6C 75 70 42 6C 75 70 0D 0A 46 69 72 6D 61 32 3B 4B 75 6E 64 65 3B 3B 53 74 72 61 73 73 65 20 31 32 30 3B 3B 32 33 39 36 36 3B 4B 6F 65 6C 6E 3B 41 4C 42 41 4C 42 3B 30 30 30 30 30 30 30 30 30 30 30 3B 3B 3B 44 45 3B 50 6C 75 62 50 6C 75 62 0D 0A
Folgendes habe ich bis her probiert:

01.
sed "s/\r/123456789/g" 2019-05-08_09-00-25.csv
01.
find 2019-05-08_09-00-25.csv -type f -print0 | xargs -0 grep -e "\r"
Habt Ihr eine Idee für mein Problem?

Sonnst sonniges Wochenende euch noch.

Ich
Mitglied: colinardo
LÖSUNG 25.05.2019, aktualisiert 27.05.2019
Servus,
die beiden Felder Trennt nur 1 und zwar laut dem Hexeditor ein Absatz „0A“ Alle anderen werden ganz normal und vorbildlich mit „0D 0A“ umgesetzt.
Das eine ist ein ganz normaler LF (0A) wie er unter Linux üblich ist, das andere ist das CRLF (0D0A) das unter Windows/DOS den Zeilenumbruch darstellt. Es gibt hier also kein "unnormal" da hat nur einer Unix und DOS Zeilenumbrüche gemixt.

Das zu ersetzen ist aber kein Problem und lässt sich bspw. mit sed erledigen:
01.
sed -Ee ':a;N;$!ba;s/([^\r])\n/\1 /g' "2019-05-08_09-00-25.csv" >new.csv
Zur Erläuterung der sed Parameter:

  • :a definiert einen Label
  • N Aktuelle und nächste Zeile in den Pattern-Space laden
  • $!ba springe solange zu Label :a bis das Ende der Datei erreicht ist
  • Es befindet sich nun der ganze Text der Datei im Pattern-Space und auf diesen wird die folgende Replace-Aktion angewendet:
  • s/([^\r])\n/\1 /g : Ersetzt alle Unix-Zeilenumbrüche (0A) mit einem Leerzeichen "ohne dabei das 0A in den vorhandenen DOS-Zeilenumbrüchen(0D0A) zu ersetzen".

Bei solchen Operationen, also den hin und her übertragen zwischen Linux und Windows sollte man bei der Übertragung und dem Handling in Texteditoren höllisch aufpassen, dass dieser nicht automatische Ersetzungen der Zeilenumbrüche ungefragt vornimmt. Außerdem sollte man mit Datentransfer-Tools aufpassen und den Binary-Modus statt dem Texttransfer-Modus verwenden da ansonsten Zeilenumbrüche auch automatisch angepasst werden können.
Das kann nämlich alles zu allgemeiner Verunsicherung führen.

Grüße Uwe
Bitte warten ..
Mitglied: OIOOIOOIOIIOOOIIOIIOIOOO
27.05.2019, aktualisiert um 09:50 Uhr
Moin Uwe,

danke dir viel mals für die ausführliche Erklärung. Nach dem ich in deinem Code das $! vor dem ba hinzugefügt habe, hat es auch funktioniert.

Des weiteren wurde mir noch, scheinbar das Grundwissen "Gruppierung" erläutert. Ich hoffe ich behalte es für das nächste Jahr

Wir haben den Code noch etwas erweitert, in dem wir das falsch positionierte Feld in die richtige Spalte hinzugefügt haben.

01.
sed -i -Ee ':a;N;$!ba;s/([^\r])\n([^;]*);/\1;\2/g' 2019-05-19_*.csv
Euch allen einen guten Start in die Woche.

Ich
Bitte warten ..
Mitglied: colinardo
27.05.2019, aktualisiert um 09:44 Uhr
Zitat von OIOOIOOIOIIOOOIIOIIOIOOO:

Moin Uwe,

danke dir viel mals für die ausführliche Erklärung. Nach dem ich in deinem Code das $! vor dem ba hinzugefügt habe, hat es auch funktioniert.
Uups, da habe ich wohl aus versehen ein Cut zum Erklärtext statt einem Copy gemacht . Ist korrigiert.
Bitte warten ..
Mitglied: OIOOIOOIOIIOOOIIOIIOIOOO
27.05.2019 um 10:29 Uhr
Eine Frage habe ich doch noch.

Wofür steht das E nach dem sed --Ee ?
Bitte warten ..
Mitglied: colinardo
27.05.2019, aktualisiert um 10:42 Uhr
Extended Regular Expressions

sed --help oder man sed verrät es dir übrigens auch genauso wie die manpage

http://www.gnu.org/software/sed/manual/sed.html#Command_002dLine-Option ...
Bitte warten ..
Mitglied: OIOOIOOIOIIOOOIIOIIOIOOO
27.05.2019 um 11:13 Uhr
hmm komisch, bei mir unter man sed gibt es diese Funktion nicht.

(Centos 7)

Der Script läuft und das ist die Hauptsache.

Viele Dank
Bitte warten ..
Mitglied: colinardo
27.05.2019, aktualisiert um 11:27 Uhr
Alternativen sind -r oder --regexp-extended. Je nach Distro ist der Einsatz nötig damit sed submatches und erweiterte Regex-Funktionen nutzen kann, kommt aber darauf an welchen Posix Standard die Distro gerade konfiguriert hat.
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Absatz in Textfeld deaktivieren
gelöst Frage von eraiserMicrosoft Office6 Kommentare

Hallo, ich kämpfe gerade mit dem erstellen einer Briefvorlage in MS Office Word 2016. Da die Vorlage zukünftig aus ...

Microsoft Office
Excel Such- und Vergleichsfunktion
gelöst Frage von oesi1989Microsoft Office15 Kommentare

Hallo zusammen, ich habe 2 Tabellen mit Name, Vorname und Arbeitgeber. 1. Tabelle Name Vorname Geb-Datum Arbeitgeber Straße Ort ...

Exchange Server
Such-Index nach Neuerstellung defekt
Frage von CoverianExchange Server

Guten Morgen zusammen, wir haben hier aktuell ein Problem das mir schlaflose Nächte bereitet. Es handelt sich um einen ...

Windows Server

Word 2010 : Absatz - Abstand per GPO ändern

gelöst Frage von johanna-pWindows Server3 Kommentare

Liebe Gemeinde, ich muss bei einer großen Gruppe von PCs die Word Einstellung Absatz / Abstand von 10 (Standard) ...

Neue Wissensbeiträge
Windows 10
Windows 10: Netzwerk zeigt Fehler 0x80070035
Tipp von anteNope vor 1 StundeWindows 105 Kommentare

Moin zusammen, ich hatte gerade mal wieder das Vergnügen mit dem obigen Fehler. Unter Borns Blog ist das beschreiben: ...

Windows 10

Bug: Windows 10 Enterprise LTSC erhält Funktionsupdate angeboten

Information von kgborn vor 19 StundenWindows 104 Kommentare

Der Fehler ist mittlerweile zwar korrigiert, aber ich denke, ich stelle die Info doch mal hier für Leute ein, ...

Viren und Trojaner

Entschlüsselungs-Tool für aktuelle GandCrab-Version verfügbar

Information von MrCount vor 23 StundenViren und Trojaner

Für alle Betroffenen gibt es offenbar ein Tool zur Entschlüsselung. Dann wird wohl die nächste version von GandCrap nicht ...

LAN, WAN, Wireless
Sophos RED50 stürzt ab und ist danach tot
Information von Ex0r2k16 vor 4 TagenLAN, WAN, Wireless3 Kommentare

Hey, nach meinem Thread bin ich durch Zufall auf das hier gestoßen: Also wenn ihr UTMs und RED50's im ...

Heiß diskutierte Inhalte
Viren und Trojaner
Gefahr - Risiko zwischen doc xls und docx xlsx
Frage von Asker06Viren und Trojaner33 Kommentare

Guten Tag, ich wollte wissen ob die .doc und .xls datein viel gefährlicher sind als .docx und .xlsx?? Ich ...

Sicherheit
Wie sichert (verschlüsselt) ihr eure Passwörter ?
gelöst Frage von decehakanSicherheit20 Kommentare

Hallo Admins, Mittlerweile hat man für jeden Dienst seine Zugangsdaten, sei es Amazon, Bank, FB, etc , vor allem ...

Windows Netzwerk
Standardgateway bei Clients mit statischer IP Adresse ändern
Frage von sammy65Windows Netzwerk17 Kommentare

Hallo miteinander, Wie kann ich über eine GPO die Standardgateway an meinen Clients ändern? Ich habe das versucht?: Es ...

Netzwerkmanagement
VLAN zwischen HP Switchen
gelöst Frage von SykoNFNetzwerkmanagement15 Kommentare

Moin Moin, ich versuche eine ganz einfachen Aufbau von VLAN zu erreichen. Ich habe zwei Switche, HP 1920-48G und ...