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

Bash: suchen und ersetzen

Mitglied: SIPSIP

SIPSIP (Level 1) - Jetzt verbinden

06.02.2014 um 09:34 Uhr, 4116 Aufrufe, 14 Kommentare, 2 Danke

Hallo zusammen

Möchte aus einer riesigen HTML Datei folgenden Strings ersetzen: ^M\

Nun habe ich dieses kleine Script erstellt, wobei ich die Strings mit einem a oder am besten wäre mit gar keinem Zeichen zu ersetzen
01.
#!/bin/bash
02.

03.
string=^M\
04.
newstring=a
05.

06.
echo "sed 's|$string|$newstring|'"
07.
sed 's|$string|$newstring|'
Nur passiert leider rein gar nichts... nicht einmal eine Fehlermeldung.

Ich versuchte auch schon im sed Befehl anstatt die Pipe | ein normales Slash Zeichen.

Was mache ich falsch?
Mitglied: hajowe
06.02.2014 um 09:49 Uhr
hi SIP SIP

In-Place-Editing[Bearbeiten]

Aufgrund der Art wie sed Textmanipulationen durchführt, kann dies nicht direkt auf der Eingabedatei geschehen. Als Ausgabe wird eine von dieser getrennte Datei benötigt, die gegebenenfalls danach über die Eingangsdatei kopiert wird.

sed '...<Anweisungen>...' /path/to/inputfile > /path/to/output
Bitte warten ..
Mitglied: Lochkartenstanzer
06.02.2014, aktualisiert um 11:01 Uhr
Zitat von SIPSIP:

Möchte aus einer riesigen HTML Datei folgenden Strings ersetzen: ^M\


wenn Du einen backslash ersetzen willst, mußt Du den "escapen" und ^ hat eine Sonderbedeutung in regulären Ausdrücken.

echo "abcde^m\blabala" | sed -e "s:\^m\\\:a:g"
lks
Bitte warten ..
Mitglied: SIPSIP
06.02.2014 um 10:53 Uhr
Mein Script sieht nun folgendermassen aus:
01.
#!/bin/bash
02.

03.
echo "replacing string '^M\' with the lettre 'a'"
04.

05.
sed -e "s:\^M\\\:a:g"
Komischerweise tut sich aber noch nichts, also hab ich zum testen nur einen kleinen Teil des HTML Codes in einer Seperaten Datei gespeicht wobei aber trotzdem nichts geschieht.

Kann es sein, dass es Probleme gibt mit all den anderen Sonderzeichen?

hier noch die Testdatei:
01.
an class="Section1"><span class="Haupttitel">blabla<br /></span><br />blabla</span></p>^M\
02.
<p><span class="Section1"><br /><a href="link">1. </a><a href="index.php?
03.
<p><span class="Section1"><br /></span></p>^M\
04.
<p><span class="Ueberschrift">titel</span></p>^M\
05.
<p><span class="Section1"><br /></span></p>^M\
06.
<p class="Haupttext"> </p>^M\
07.
<p class="Haupttext">blabla</p>^M\
08.
<p class="Haupttext"> </p>^M\
09.
<p class="Haupttext">text</p>^M\
10.
<p class="Haupttext"> </p>^M\
11.
<p><span class="Section1"><span class="Haupttext">titel</span><br /></span></p>
12.
<p class="Ueberschrift"> </p>^M\
Bitte warten ..
Mitglied: Lochkartenstanzer
06.02.2014 um 11:00 Uhr
Bei mir kommt folgendes raus:

lks@roku:~$ cat tmp/testdatei.txt | sed -e "s:\^M\\\:a:g"
an class="Section1"><span class="Haupttitel">blabla<br /></span><br />blabla</span></p>a
<p><span class="Section1"><br /><a href="link">1. </a><a href="index.php?
<p><span class="Section1"><br /></span></p>a
<p><span class="Ueberschrift">titel</span></p>a
<p><span class="Section1"><br /></span></p>a
<p class="Haupttext"> </p>a
<p class="Haupttext">blabla</p>a
<p class="Haupttext"> </p>a
<p class="Haupttext">text</p>a
<p class="Haupttext"> </p>a
<p><span class="Section1"><span class="Haupttext">titel</span><br /></span></p>
<p class="Ueberschrift"> </p>a
wobei testdatei.xt Deine obige datei ist, per copy und paste aus dem quelltext in eine datei gepackt.

lks
Bitte warten ..
Mitglied: SIPSIP
06.02.2014 um 11:13 Uhr
stimmt... jedoch sobald ich es als Scritp versuche, klappt es nichtmehr...

01.
#!/bin/bash
02.

03.
echo "replacing string '^M\' with the lettre 'a'"
04.

05.
sed -e "s:\^M\\\:a:g" > result.csv
Bitte warten ..
Mitglied: Lochkartenstanzer
06.02.2014 um 11:26 Uhr
Irgendetwas machst du falsch:


lks@roku:~$ cat tmp/testdatei.txt 
an class="Section1"><span class="Haupttitel">blabla<br /></span><br />blabla</span></p>^M\
<p><span class="Section1"><br /><a href="link">1. </a><a href="index.php?
<p><span class="Section1"><br /></span></p>^M\
<p><span class="Ueberschrift">titel</span></p>^M\
<p><span class="Section1"><br /></span></p>^M\
<p class="Haupttext"> </p>^M\
<p class="Haupttext">blabla</p>^M\
<p class="Haupttext"> </p>^M\
<p class="Haupttext">text</p>^M\
<p class="Haupttext"> </p>^M\
<p><span class="Section1"><span class="Haupttext">titel</span><br /></span></p>
<p class="Ueberschrift"> </p>^M\


lks@roku:~$ cat tmp/testsed.sh 
#!/bin/bash

sed -e "s:\^M\\\:a:g"


lks@roku:~$ cat tmp/testdatei.txt | tmp/testsed.sh 
an class="Section1"><span class="Haupttitel">blabla<br /></span><br />blabla</span></p>a
<p><span class="Section1"><br /><a href="link">1. </a><a href="index.php?
<p><span class="Section1"><br /></span></p>a
<p><span class="Ueberschrift">titel</span></p>a
<p><span class="Section1"><br /></span></p>a
<p class="Haupttext"> </p>a
<p class="Haupttext">blabla</p>a
<p class="Haupttext"> </p>a
<p class="Haupttext">text</p>a
<p class="Haupttext"> </p>a
<p><span class="Section1"><span class="Haupttext">titel</span><br /></span></p>
<p class="Ueberschrift"> </p>a
Bitte warten ..
Mitglied: SIPSIP
06.02.2014 um 11:36 Uhr
komisch...
sobald ich den Grund dafür gefunden habe melde ich mich nochmal.
Danke für deine Hilfe
Bitte warten ..
Mitglied: Lochkartenstanzer
06.02.2014 um 11:43 Uhr
Zitat von SIPSIP:

komisch...

Nimm mal einfach meine Dateien oben per copy und paste und versuche es damit.

Vielleicht sind in deinen dateien noch zusätzliche zeichen, die irgendwie querschießen.

sobald ich den Grund dafür gefunden habe melde ich mich nochmal.

Wäre interessant zu wissen, was bei dir anders ist.

Danke für deine Hilfe

Gern geschehen.

lks
Bitte warten ..
Mitglied: SIPSIP
06.02.2014 um 11:50 Uhr
Zitat von SIPSIP:

komisch...
sobald ich den Grund dafür gefunden habe melde ich mich nochmal.
Danke für deine Hilfe

Es funktioniert nun
musste das scritp noch ein Wenig erweitern

#!/bin/bash

cat /tmp/test.csv | sed -e "s:\^M\\\:a:g" >result.csv

Danke
Bitte warten ..
Mitglied: hajowe
06.02.2014, aktualisiert um 13:56 Uhr
Zitat von SIPSIP:

> Zitat von SIPSIP:
>
> komisch...
> sobald ich den Grund dafür gefunden habe melde ich mich nochmal.
> Danke für deine Hilfe

Es funktioniert nun
musste das scritp noch ein Wenig erweitern

#!/bin/bash

cat /tmp/test.csv | sed -e "s:\^M\\\:a:g" >result.csv

Danke
Lies mal meinen Kommentar da habe ich dir es geschrieben das du in eine die Eingabe und das Ergebnis in andere Datei schreiben mußt.
Bitte warten ..
Mitglied: SIPSIP
07.02.2014, aktualisiert um 09:46 Uhr
Zitat von hajowe:
Lies mal meinen Kommentar da habe ich dir es geschrieben das du in eine die Eingabe und das Ergebnis in >andere Datei schreiben mußt.
Stimmt habs erst jetzt gesehen Danke

Ich weiss zwar das dies nicht zu diesem Thema passt aber vielleicht weiss einer von euch bescheid was ich hier falsch mache...
Hab ein PHP Script das eigentlich macht was ich will nur gibt es mir die Ausgabe nur als echo aus aber eigentlich will ich, dass es mir das Ergebniss auch in eine Datei schreibt.

01.
#!/usr/bin/php
02.
<?php
03.

04.
$datei = "php-result.csv";
05.
$fp = fopen($datei, "w+");
06.

07.
if ($argc <= 1) {
08.
	echo "Expected a file at argument 1, but it doesn't exist.\n";
09.
	exit;
10.
}
11.

12.
$file = $argv[1];
13.
if (!file_exists($file)) {
14.
	echo "No such file. " . $file . "\n";
15.
}
16.
$content = file_get_contents($file);
17.
$data = array();
18.
if (preg_match_all("/<\s*td\s+valign\s*=\s*\"\"top\"\"\s*>(.*)\s*\<\s*\/td\s*\>/iUs", $content, $matches)) {
19.
	foreach ($matches[1] AS $entry) {
20.
		$entry = trim($entry);
21.
		if (preg_match("/\<p class\=\"\"Untertitel\"\"\>(.+)\<\/p\>.*\<p class\=\"\"Haupttext\"\"\>([^<]+@[^<]+)\<\/p\>/iUs", $entry, $entry_match)) {
22.
			$data[] = array(
23.
				'name' => strip_tags($entry_match[1]),
24.
				'email' => strip_tags($entry_match[2]),
25.
			);
26.
		}
27.
	}
28.
}
29.
echo "NAME;EMAIL\n";
30.
foreach ($data as $person_data) {
31.
	echo '"' . $person_data['name'] . '";"' . $person_data['email'] . "\"\n";
32.
}
33.

34.
fwrite($fp,"\n");
35.
fclose($fp);
36.
?> 
Die nötige Syntax ist die am Anfang und Ende aber ich bekomm nur ein leeres csv zurück...
Bitte warten ..
Mitglied: hajowe
07.02.2014 um 10:30 Uhr
Servus

Probiere mal deine dinge in eine Neue Datei zu schreiben
echo „VARIABLE“ > deinedatei.txt

Wenn ich es richtig sehe liest du die Datei und willst dann in die identische Datei wieder schreiben.
Könnte das Problem sein.

Kann sein da du die vorher zum lesen öffnest das du diese erst schliessen und zum Schreiben neu aufmachen mußt
Dann geht die aber denke ich der Inhalt flöten.


Gruß
Bitte warten ..
Mitglied: SIPSIP
07.02.2014 um 10:43 Uhr
Zitat von hajowe:
Probiere mal deine dinge in eine Neue Datei zu schreiben
echo „VARIABLE“ > deinedatei.txt

Danke für die schnelle Antwort, PHP erkennt > nicht als Syntax...

Hier noch die Quelle woher ich dieses Komando habe:
http://www.tutorials.de/content/504-textdateien-schreiben-lesen-anfuege ...
Bitte warten ..
Mitglied: hajowe
07.02.2014, aktualisiert um 11:21 Uhr
Pardon
ich war bei einem Linus Script, hatte es übersehen das es php ist
Ich würde mal eine neue 2. File zum Schreiben öffnen
und es so testen.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Bash sqlplus oder Bash Fehler?
Frage von MarabuntaBatch & Shell7 Kommentare

Hallo, da ich sehr eingeschränkt in Bash bin, brauche ich hier etwas Hilfe. Was stimmt mit dem EOF nicht? ...

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 ...

Ubuntu
Bash - Scriptsteuerung
gelöst Frage von rsadmchefUbuntu3 Kommentare

Hallo Leute, Es geht um folgendes auf meinem Desktop: ( Lubuntu 14.04 LTS ) Aktuell läuft ein Userscript sc1 ...

Batch & Shell
Bash Mail senden
gelöst Frage von MarabuntaBatch & Shell7 Kommentare

Hallo, ich versuche eine einfache Mail mittels Bash zu verschicken. Die mailbody.txt ist leer. Auch mit sinnvollen Parametern kann ...

Neue Wissensbeiträge
Windows 10

"Windows 10 Pro V1903: Gruppenrichtlinie "Telemetrie zulassen" aktivierbar?"

Tipp von Snowbird vor 4 StundenWindows 101 Kommentar

Sicherheits-Tools

TrendMicro Worry-Free Business Security 10.0 SP1 - Jetzt in Deutsch verfügbar! (Windows 10 1903 Support)

Tipp von TrinXx vor 1 TagSicherheits-Tools1 Kommentar

Moin! Nach wochenlangem Warten wird Trend Micro das SP1 für WFBS 10 voraussichtlich am 26.08.19 veröffentlichen. Ich habe das ...

Hyper-V
Setup VM W2016 startet nicht in Hyper-V 2016
Erfahrungsbericht von keine-ahnung vor 2 TagenHyper-V7 Kommentare

Moin, sitze gerade über meinem neuen Server und versuche, die VM auf den Host zu prügeln. Jetzt wollte ich ...

Server-Hardware

HPE Proliant ML350P Gen8 Probleme mit Zugriff auf Raid-Volumes

Erfahrungsbericht von goscho vor 3 TagenServer-Hardware1 Kommentar

Hallo Leute, das Problemgerät: HPE ML350P G8 Windows Server 2012R2 HyperV-Host 8 x 300 GB 10K SAS HDD (1 ...

Heiß diskutierte Inhalte
Server
Ein Server ins Haus stellen. Was brauche ich dafür?
Frage von JoschiTomServer13 Kommentare

Hallo Community, ich spiele mit dem Gedanken eine Server mir zu holen. Was brauche ich dafür? Und wie sind ...

Windows Server
Ist es möglich, eine deutsche W2016 Installation mit einer UK-Lizenz zu aktivieren?
gelöst Frage von keine-ahnungWindows Server10 Kommentare

Moin at all, ist ja noch Freitag. Ich habe hier noch zwei UK OEM W2016 Standard Pakete rumfliegen Muss ...

Batch & Shell
Mittels SED Text ersetzen in Anführungszeichen
gelöst Frage von nekronBatch & Shell9 Kommentare

Moin … bin nicht wirklich der SED/regex Mensch, vielleicht kann mir jemand auf die Schnelle Helfen :) ich habe ...

LAN, WAN, Wireless
Mikrotik Gast-Wlan keine Verbindung zum Internet?
Frage von dirkschwarzLAN, WAN, Wireless8 Kommentare

Guten Morgen, habe ein wahrscheinlich einfaches Problem, bei dem ich aber nicht wirklich weiter komme Ich möchte ein Gast-Wlan ...