SED - Spezial benötigt - finden von Pattern

Hobbystern

Hobbystern

Wahl-Debianer
Hallo Gemeinde,

sed ist ein guter Freund geworden, seit Jahren :-)

Ich habe nunmehr eine Datei in welcher dank MS alles doppelt vorkommt, sieht etwa so aus :

Code:
<--START HTML-->
jede menge text
<--END HTML-->
<--START HTML-->
jede menge text
<--END HTML-->

Mittels sed oder awk müsste ich den zweiten - absolut identischen teil heruasschneiden und löschen oder halt teilen.

Hat jemand eine gute Idee?

LG STefan
 
Abend,

auf die schnelle, einfach ausgeben lassen bis das end html auftaucht.

Code:
cat dummy.txt | while read line; do 
if [ "$line" == "<--END HTML-->" ]; then 
   echo $line; 
   exit 0; 
else 
   echo $line; 
fi; 
done

<--START HTML-->
jede menge text
<--END HTML-->

mfg
HeadCrash
 
Hi HeadCrash,

die Idee ist gut, leider geht es nicht - folgendes habe ich nunmehr eingesetzt :

Code:
rm test.2 2>/dev/null
cat test.1 | while read line; do
if [ "$line" == "<!--END OF OUTPUT FROM EXCEL PUBLISH AS WEB PAGE WIZARD-->" ]; then
   exit 0;
else
   echo $line >> test.2;
fi;
done

Ich bekomme in test.2 den gleichen Inhalt wie in test.1 - das heisst er findet diesen Input oben nicht, Sonderzeichen? oder ggf. ein unsichtbares Zeichen?

Kann ich nicht auch ein Pattern Matching machen?

LG Stefan
 
Morgen,

das Funktioniert auch nur, wenn "<!-- END ... -->" wirklich alles ist was in der Zeile steht.
Evtl die Datei erst mal durch dos2unix laufen lassen, da die Art und Weise wie neue Zeilen eingeleitet werden sich ja unterscheiden.

Selbstverständlich kannst du auch ein Pattern Matching machen, war ja nur ein Vorschlag wie es gehen kann :)

mfg
HeadCrash
 
Hi Headcrash - Guten Morgen!

ich habe mich nochmals an Google mit Matching gewendet und habe eine praktikable Lösung :-)

Code:
rm test.2 2>/dev/null
cat test.1 | while read line; do
if [[ "$line" =~ 'END OF OUTPUT FROM EXCEL PUBLISH AS WEB PAGE WIZARD' ]]; then 
   exit 0;
else
   echo $line >> test.2;
fi;
done
da die Art und Weise wie neue Zeilen eingeleitet werden sich ja unterscheiden.
Ohja, gerade bei MS Anwendungen kennen wir das doch ganz gut - nicht? :-)

Danke (!) Liebe Grüsse !

Stefan
 
Morgen,

naja ist allgemein bekannt, dass die Zeilenumbrüche anders Codiert sind.
Aber wie auch immer, schönen Tag noch.

mfg
HeadCrash

ps: was sagt eigentlich "file test.1"
 
File sagt .. :

Code:
test.1: HTML document text

Ich filtere gerade noch mehr aus diesem Dokument und escape wie ein Irrer, gibt es eine Möglichkeit SED genau dieses hier suchen zu lassen und es dann zu löschen :

Code:
<td height=20 class=xl7418198 width=72 style='height:15.0pt;width:54pt'><a
name="RANGE!A1:H79"></a></td>

?

Ich habe Probleme mit den Backticks - auch escaped werden die zu einem Problem..

LG Stefan
 
Hi,

mit sed kannst Du auch recht bequem bestimmte Textabschnitte mittels direkter Adressierung oder via regulärer Ausdrücke herausschneiden:

Code:
sed -n '1,/^.*<END OF OUTPUT FROM.*/p' test1
 

Ähnliche Themen

Mit sed Dateistellen und finden und mit markiertem Text ersetzen

Server-Monitoring mit RRDTool

Zurück
Oben