sed Programm
sed Programm
Also, ganz simpel.
Ich habe nun folgende Zeile
<title lang="de">test test test</title>
Ich möchte nun, dass Sed <title lang="de"> und </title> mit irgendwas ersetz.
Ich glaub ich hab da einen Fehler gemacht, indem ich das Hochkommartar mit Suche einbezogen habe (muss warscheinlich formal anders gemacht werden).
Also, wäre klasse, wenn jemand Rat hat.
Ich habe nun folgende Zeile
<title lang="de">test test test</title>
Ich möchte nun, dass Sed <title lang="de"> und </title> mit irgendwas ersetz.
Ich glaub ich hab da einen Fehler gemacht, indem ich das Hochkommartar mit Suche einbezogen habe (muss warscheinlich formal anders gemacht werden).
Also, wäre klasse, wenn jemand Rat hat.
Moin Mb81,
ich habe im Moment kein sed zur Verfügung und kann Dir leider keine getestete Tipps geben, daher "nur" diesen Link
http://www.linuxfibel.de/sed.htm
Gruß fuzzy
ich habe im Moment kein sed zur Verfügung und kann Dir leider keine getestete Tipps geben, daher "nur" diesen Link
http://www.linuxfibel.de/sed.htm
Gruß fuzzy
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
Code: Alles auswählen
check@tne:~$ echo '<title lang="de">test test test</title>' | \
> sed -e 's#<title lang="de">#was anderes-#' -e 's#</title>#-ganz anders#'
was anderes-test test test-ganz anders
check@tne:~$
Ok, preisfrage dann,Savar hat geschrieben:Code: Alles auswählen
check@tne:~$ echo '<title lang="de">test test test</title>' | \ > sed -e 's#<title lang="de">#was anderes-#' -e 's#</title>#-ganz anders#' was anderes-test test test-ganz anders check@tne:~$
warum haut das hier nicht hin:
Code: Alles auswählen
grep -e programme -e title -e desc |\
sed 's/"//g' |\
sed 's/ <programme start=//g' |\
sed 's/stop=/;/g' |\
sed 's/showview=[0-9]*.[0-9]//g' |\
sed 's/channel=/;/g' |\
sed 's/>//g' |\
sed 's/<title lang="de">/;/g' |\
sed 's/<\/title>//g' |\
sed 's/<desc lang="de">/;/g' |\
sed 's/<\/desc>//g' |\
sed 's/<\/programme>/EOL/g' > $Output
Ausgangsausgabe könnte so aussehen:
Code: Alles auswählen
<tv>
<programme channel="bbc2.bbc.co.uk" start="20010829000500 BST">
<title>The Phil Silvers Show</title>
<desc>
Bilko claims he's had a close encounter with an alien in order
to be given some compassionate leave so he can visit an old
flame in New York.
</desc>
</programme>
<programme channel="channel4.com" start="20010829095500 BST">
<title>King of the Hill</title>
<sub-title>Meet the Propaniacs</sub-title>
<desc>
Bobby tours with a comedy troupe who specialize in
propane-related mirth.
</desc>
<credits>
<actor>Mike Judge</actor>
<actor>Lane Smith</actor>
</credits>
<category>animation</category>
</programme>
</tv>
- godsmacker
- Beiträge: 902
- Registriert: 16.03.2003 21:50:26
- Lizenz eigener Beiträge: Artistic Lizenz
- Wohnort: Chemnitz
-
Kontaktdaten:
Nun, es gibt mir so was aus:
20051210152500 +0100 ;junior.tvtoday.de
<title lang=deFerris Bueller</title
<sub-title lang=deDas verhexte Traumauto</sub-title
</programme
und so sieht halt die Eingabe aus (als Beispiel):
<programme start="20051128231500 +0100" stop="20051129001500 +0100" showview="10-20-119" channel="rtl2.de">
<title lang="de">exklusiv - die reportage</title>
<desc lang="de">Außer Tresen nix gewesen - Wenn die Kneipe zum Wohnzimmer wird</desc>
</programme>
Nach der Channel parsing, ist also was falsch.
20051210152500 +0100 ;junior.tvtoday.de
<title lang=deFerris Bueller</title
<sub-title lang=deDas verhexte Traumauto</sub-title
</programme
und so sieht halt die Eingabe aus (als Beispiel):
<programme start="20051128231500 +0100" stop="20051129001500 +0100" showview="10-20-119" channel="rtl2.de">
<title lang="de">exklusiv - die reportage</title>
<desc lang="de">Außer Tresen nix gewesen - Wenn die Kneipe zum Wohnzimmer wird</desc>
</programme>
Nach der Channel parsing, ist also was falsch.
http://www.linux-fuer-alle.de/doc_show. ... 81&catid=8
darin enthalten ist praktisch
http://lists.suse.com/archive/suse-linu ... /1119.html
Gruß fuzzy
darin enthalten ist praktisch
Code: Alles auswählen
sed 's/<[^>]*>//g' test.html > test-ohne-tags.txt
Gruß fuzzy
Bringt nichts..fuzzy hat geschrieben:http://www.linux-fuer-alle.de/doc_show. ... 81&catid=8
darin enthalten ist praktischhttp://lists.suse.com/archive/suse-linu ... /1119.htmlCode: Alles auswählen
sed 's/<[^>]*>//g' test.html > test-ohne-tags.txt
Gruß fuzzy
Würde dann ja, nach jedem Tag ein Komma machen. Es soll ja nur einmal zum trennen der Inhalte gemacht werden. Wie ich das gemacht habe, ist es schon richtig.. es enthält aber einen kleinen Fehler, den ich leider bisher noch nicht gesehen habe...
Hallo Mb81,
kannst Du bitte nochmal eine kleine beispielhafte "Testeingabe" und eine "Testausgabe" geben, bzw. so wie die 'Testausgabe" aussehen soll.
So etwas ist nicht richtig?
Gruß fuzzy
kannst Du bitte nochmal eine kleine beispielhafte "Testeingabe" und eine "Testausgabe" geben, bzw. so wie die 'Testausgabe" aussehen soll.
So etwas ist nicht richtig?
Code: Alles auswählen
fuzzy@sid:/tmp$ cat test.html
<programme start="20051128231500 +0100" stop="20051129001500 +0100" showview="10-20-119" channel="rtl2.de">
<title lang="de">exklusiv - die reportage</title>
<desc lang="de">Außer Tresen nix gewesen - Wenn die Kneipe zum Wohnzimmer wird</desc>
</programme>
fuzzy@sid:/tmp$ sed 's/<[^>]*>//g' test.html
exklusiv - die reportage
Außer Tresen nix gewesen - Wenn die Kneipe zum Wohnzimmer wird
wie wäre es dann mit
Code: Alles auswählen
sed -e 's/<[^>]*>/,/g' Datei | sed -e 's/,,/,/g'
Sollte dann wohl,fuzzy hat geschrieben:Hallo Mb81,
kannst Du bitte nochmal eine kleine beispielhafte "Testeingabe" und eine "Testausgabe" geben, bzw. so wie die 'Testausgabe" aussehen soll.
So etwas ist nicht richtig?Gruß fuzzyCode: Alles auswählen
fuzzy@sid:/tmp$ cat test.html <programme start="20051128231500 +0100" stop="20051129001500 +0100" showview="10-20-119" channel="rtl2.de"> <title lang="de">exklusiv - die reportage</title> <desc lang="de">Außer Tresen nix gewesen - Wenn die Kneipe zum Wohnzimmer wird</desc> </programme> fuzzy@sid:/tmp$ sed 's/<[^>]*>//g' test.html exklusiv - die reportage Außer Tresen nix gewesen - Wenn die Kneipe zum Wohnzimmer wird
20051128231500 +0100 ;20051129001500 +0100 ;10-20-119 ;rtl2.de ;exklusiv - die reportage ; Außer Tresen nix gewesen - Wenn die Kneipe zum Wohnzimmer wird
geben.
Hmm.. hast das erste Komma und das letzte dann aber vergessen ?Joghurt hat geschrieben:wie wäre es dann mitCode: Alles auswählen
sed -e 's/<[^>]*>/,/g' Datei | sed -e 's/,,/,/g'
Muss halt so sein. Da würde mir ein XML Parser nicht groß helfen...Joghurt hat geschrieben:Es funktioniert ja auch nicht immer, z.B. wenn zwischen zwei Tags ein newline ist.
Warum musst du das so genau haben? Und warum benutzt du dann nicht, wie schon vorgeschlagen, einfach einen XML-Parser? z.B. den xml.dom.minidom Parser von Python?
Ich probiere das mal als nächstes:
grep -e programme -e title -e desc |\
sed 's/"//g' |\
sed 's/ <programme start=//g' |\
sed 's/stop=/;/g' |\
sed 's/showview=[0-9]*.[0-9]//g' |\
sed 's/channel=/;/g' |\
sed 's/*.[a-zA-Z]>//g' |\
sed 's/<title lang="de">/;/g' |\
sed 's/<\/title>//g' |\
sed 's/<desc lang="de">/;/g' |\
sed 's/<\/desc>//g' |\
sed 's/<\/programme>/EOL/g' > $Output
Aber wie gesagt... vielleicht sieht ja jemand den Fehler vor mir.
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
als erstes solltest mal Code auch in Code - Tags zu schreiben
dann optimiert man erstmal und ich frag mich grad wieso du auf "<programme start" suchst, denn es ist doch "<programme channel" ?? (das hab ich mal geändert) und so genau weiß ich immer noch nicht was du raushaben willst... poste doch einfach mal ein stück von deinem Ausgansfile und dann ein stück wie es aussehen soll NACH NoPaste
dann optimiert man erstmal und ich frag mich grad wieso du auf "<programme start" suchst, denn es ist doch "<programme channel" ?? (das hab ich mal geändert) und so genau weiß ich immer noch nicht was du raushaben willst... poste doch einfach mal ein stück von deinem Ausgansfile und dann ein stück wie es aussehen soll NACH NoPaste
Code: Alles auswählen
grep -e programme -e title -e desc |\
sed -e 's/\"//g' \
-e 's/ <programme channel=//g' \
-e 's/stop=/;/g' \
-e 's/showview=[0-9]*.[0-9]//g' \
-e 's/channel=/;/g' \
-e 's/*.[a-zA-Z]>//g' \
-e 's/<title lang="de">/;/g' \
-e 's/<\/title>//g' \
-e 's/<desc lang="de">/;/g' \
-e 's/<\/desc>//g' \
-e 's/<\/programme>/EOL/g' > $Output
Zuletzt geändert von Savar am 04.12.2005 21:32:46, insgesamt 1-mal geändert.
Bei
will ich das raus:
Code: Alles auswählen
<programme start="20051128231500 +0100" stop="20051129001500 +0100" showview="10-20-119" channel="rtl2.de">
<title lang="de">exklusiv - die reportage</title>
<desc lang="de">Außer Tresen nix gewesen - Wenn die Kneipe zum Wohnzimmer wird</desc>
</programme>
Code: Alles auswählen
20051128231500 +0100 ;20051129001500 +0100 ;10-20-119 ;rtl2.de ;exklusiv - die reportage ; Außer Tresen nix gewesen - Wenn die Kneipe zum Wohnzimmer wird
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
ist jetzt mehr als hässlich, geht aber..
Code: Alles auswählen
| sed \
-e 's/<programme start="//' \
-e 's/" stop=/ ;/g' \
-e 's/" showview="/ ;/g' \
-e 's/" channel="/ ;/g' \
-e 's/"> *$//' \
-e 's/<title lang="de">/;/g' \
-e 's/<\/title>//g' \
-e 's/<desc lang="de">/;/g' \
-e 's/<\/desc>//g' \
-e 's/<\/programme>/EOL/g' | gawk '{printf("%s",$0)}' | gawk '{ print $0 }'
Nope. Das klappt auch nicht. Ich probiere es jetzt noch mal. Vielleicht sieht ja doch noch jemand den Fehler.Savar hat geschrieben:ist jetzt mehr als hässlich, geht aber..Code: Alles auswählen
| sed \ -e 's/<programme start="//' \ -e 's/" stop=/ ;/g' \ -e 's/" showview="/ ;/g' \ -e 's/" channel="/ ;/g' \ -e 's/"> *$//' \ -e 's/<title lang="de">/;/g' \ -e 's/<\/title>//g' \ -e 's/<desc lang="de">/;/g' \ -e 's/<\/desc>//g' \ -e 's/<\/programme>/EOL/g' | gawk '{printf("%s",$0)}' | gawk '{ print $0 }'