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, 3277 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

String mit Zeilenumbruch per Bash ersetzen

gelöst Frage von StefanKittelBatch & Shell1 Kommentar

Hallo, ich möchte gerne in einer Datei einen String durch einen anderen ersetzen. Das dumme daran ist, dass ein ...

Batch & Shell

CMD: Suchen, Ersetzen und Hochzählen

gelöst Frage von ralfkauskBatch & Shell3 Kommentare

Hallo zusammen Ich habe folgendes Problem In einer Datei muss ein Wert gefunden, auf Korrektheit geprüft und evtl. ersetzt/geändert ...

Batch & Shell

Regwert suchen und ersetzen?

Frage von busteronBatch & Shell7 Kommentare

Hallo alle zusammen, ich hab mal wieder ne Frage! Wie kann ich die komplette Registry über eine Batch nach ...

Windows Tools

Suche Programm zum dateien suchen und Ersetzen mit Wildcat Suche

gelöst Frage von sfera-haizaWindows Tools5 Kommentare

Grüßt euch, ich nutze zzT. das Programm InfoRapid Suchen & Ersetzen um HTML / PHP Dateien zu durchsuchen bzw. ...

Neue Wissensbeiträge
Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 4 StundenWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 14 StundenSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Microsoft
Folder Security Viewer-Lizenzen zu gewinnen
Information von kgborn vor 14 StundenMicrosoft

Ich nehme das Thema mal in Absprache mit Frank hier auf, da es für den einen oder anderen Administrator ...

Hardware

Feueralarm killt Festplatten in Rechenzentrum - führt zu größerem Ausfall

Information von kgborn vor 14 StundenHardware11 Kommentare

Noch ein kleiner Beitrag für Administratoren, die in Rechenzentren aktiv sind - so als Fingerzeig. Denn es gibt Szenarien, ...

Heiß diskutierte Inhalte
Linux
Linux Server oder Windows Server - lohnt eine Umstellung auf Linux und ebenso basierende SW bei einer langfristigen Planung?
Frage von motus5Linux23 Kommentare

Wir brauchen bei uns einen neuen Server. Dieser wird als Fileserver, Domäne Controller sowie Exchange Server verwendet. Wir versuchen ...

DSL, VDSL
ISP Wechsel auf Vodefone Koax, Gebäudeverkabelung nur per Cat 7
gelöst Frage von wusa88DSL, VDSL18 Kommentare

Hallo Zusammen, ich bin momentan bei Mnet als Glasfaser Kunde und möchte Preis/Leistungs-Technisch zu Kabel Deutschland / Vodafone wechseln. ...

LAN, WAN, Wireless
Kommunikation zwischen verschiedenen IP-Bereichen
Frage von DirkHoLAN, WAN, Wireless13 Kommentare

Hallo zusammen, von Unitymedia habe ich ein neues Modem (Connect Box) erhalten, das u.a. IPv4 aber keinen Bridge Mode ...

Windows Server
Domänencontroller trennen
Frage von Akit57Windows Server13 Kommentare

Hallo, ich hoffe das mir hier jemand meine Frage trotz der spärlichen Informationen die ich geben kann beantworten kann: ...