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 Linux Linux Tools

Bash: suchen und ersetzen

Mitglied: SIPSIP

SIPSIP (Level 1) - Jetzt verbinden

06.02.2014 um 09:34 Uhr, 3192 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 ...

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

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

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

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

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...

Batch & Shell
Shell-Skript - Syntax error: Unterminated quoted string
Frage von newit1Batch & Shell13 Kommentare

Hallo Ich schreibe ein Skript das eine CSV-Datei in eine mySQL Datenbank schieben soll. Bekomme nach start des Skrips ...

E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...