[Linux] [Edit&Replace] Hoe op de commandline in een tekst?

Pagina: 1
Acties:

  • CT
  • Registratie: September 2001
  • Laatst online: 05-05 16:27

CT

📱💻 🎮 ⌚🖥

Topicstarter
Ik zit met het volgende "probleem"
Ik haal van internet een bepaalde XML file op (om de dag).
Deze file bezit allerlei data van TV programmas (XMLTV data dus)...

Maar de grabber die ik gebruik zet standaart het woordt "CEST" in de start tijd..

Hierdoor crashed FreeVo (het programma dat deze XML's weer moet lezen)

Maar als ik de XML ff 'vim' en replace all CEST with 0000 doe is er niks aan de hand.
Maar ik wil deze manier van verandere automatiseren door deze in een scriptje toe te voegen en in de cron te zetten.

Maar hoe doe ik dat?
Kan ik de file met vim openen en het hele commando om alles te veranderen in de file erheen te "pipe'en" ? (zo ja, hoe?)

Of is er een find&replace commandline script verkrijgbaar ergens?
(ik Heb al gegoogled maar heb helaas niks kunnen vinden.. en ookal met pipe'en ge-experimenteerd :P )

  • blackd
  • Registratie: Februari 2001
  • Niet online
Dat kan wel met 'sed', deze kan met regular expressions werken om te search & replacen.

9000Wp o/w SolarEdge SE6K - Panasonic 5kW bi-bloc - gasloos sinds 17-7-2023


  • DeBolle
  • Registratie: September 2000
  • Laatst online: 19:54

DeBolle

Volgens mij ligt dat anders

sed is jouw vriend.

Specs ...ik doe er niets meer aan.


  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 14:42

odysseus

Debian GNU/Linux Sid

code:
1
cat bestand.xml | sed s/CEST/0000/g > bestand2.xml

Op die manier werkt het :). Je zou het sed-commando nog wat kunnen verfijnen door alleen in bepaalde gevallen "CEST" te vervangen, want als er nu ergens in die XML-file "CEST" voorkomt dan wordt het altijd vervangen, ook als het niet om de tijdaanduiding gaat :).

edit:

Ja, dit gaat door voor de useless-use-of-cat-award, maar het is zo in ieder geval leesbaar en het performanceverschil lijkt me ook niet direct van belang :).

[ Voor 21% gewijzigd door odysseus op 04-05-2003 20:30 ]

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


  • CT
  • Registratie: September 2001
  • Laatst online: 05-05 16:27

CT

📱💻 🎮 ⌚🖥

Topicstarter
Het gaat om de tijdsaanduiding en ALLE cest's moeten weg. Dus thanks mensen :)
naja en dan werk je al 8jr met linux en weet je nieteens waar je 'sed' voor kan usen :P
weer wat geleerd.

  • Zpottr
  • Registratie: Mei 2000
  • Niet online

Zpottr

Henk

CT schreef op 04 May 2003 @ 20:29:
Het gaat om de tijdsaanduiding en ALLE cest's moeten weg.
Ook bij programma's over pakweg incest? Om rare fouten te voorkomen zou ik de context nog aan een onderzoekje onderwerpen.

[ Voor 20% gewijzigd door Zpottr op 04-05-2003 20:36 ]

Zoef


  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 14:42

odysseus

Debian GNU/Linux Sid

Zpottr schreef op 04 mei 2003 @ 20:34:
[...]

Ook bij programma's over pakweg incest? Om rare fouten te voorkomen zou ik de context nog aan een onderzoekje onderwerpen.
Het zou dan ook al in hoofdletters moeten voorkomen, maar ik ben het met je eens dat dat je er eigenlijk rekening mee moet houden. Het volgende verlangt een spatie voor en na "CEST":
code:
1
cat bestand.xml | sed s/\ CEST\ /g > bestand2.xml

Natuurlijk kan het dan nog steeds fout gaan, maar om het nog preciezer te kunnen doen zou ik het formaat van dat bestand moeten kennen :).

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Trouwens, (ff offtopic) je kan ook
code:
1
 cat bestand.xml | sed -e 's/\<CEST\>/g' | cat > bestand.xml


Behalve dat de regexp beter is, moet je dan ook niet met 2 files lopen kutten :)

  • pinball
  • Registratie: Oktober 1999
  • Niet online

pinball

Electric Monk

Omdat elk topic met sed niet compleet is zonder een zeikerd die over perl begint zal ik me maar opofferen :) :
code:
1
cat bestand.xml | perl -ne 's/\sCEST/0000/g; print;' | cat > bestand.xml


En voor degenen die zich afvroegen waar odysseus aan refereerde: useless use of cat award

Whenever you find that you are on the side of the majority, it is time to reform.


  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Pinball schreef op 05 mei 2003 @ 10:38:
Omdat elk topic met sed niet compleet is zonder een zeikerd die over perl begint zal ik me maar opofferen :) :
code:
1
cat bestand.xml | perl -ne 's/\sCEST/0000/g; print;' | cat > bestand.xml


En voor degenen die zich afvroegen waar odysseus aan refereerde: useless use of cat award
Jezus man, wat loop je nou te zeiken over Perl als het met sed kan ;)

offtopic:
Omdat elk topic met sed waar een zeikerd over Perl begint niet compleet is zonder een zeikerd die opmerkt dat het ook met sed kan zal ik me maar opofferen... :P


Trouwens.... :P
code:
1
2
3
4
5
6
7
8
9
len@qetesh:~$ time cat test | sed -e 's/a/b/g' > /dev/null
real    0m0.271s
user    0m0.240s
sys     0m0.030s

len@qetesh:~$ time cat test | perl -ne 's/a/b/g; print;' > /dev/null
real    0m0.300s
user    0m0.280s
sys     0m0.020s


Was een 3 meg grote urandom filled file... :)

[ Voor 20% gewijzigd door XTerm op 05-05-2003 10:48 ]


  • pinball
  • Registratie: Oktober 1999
  • Niet online

pinball

Electric Monk

lol :)

[jamaar mode]
jamaar met perl kun je gewoon:
code:
1
perl -pi -e 's/\sCEST/0000/g' bestand.xml
doen
[/jamaar]

edit:

Ha!
[code]
dirk@cnoc:~/tmp$ time cat randfile | sed -e 's/a/b/g' >/dev/null

real 0m0.263s
user 0m0.260s
sys 0m0.000s
dirk@cnoc:~/tmp$ time cat randfile | perl -p -e 's/a/b/g' >/dev/null

real 0m0.083s
user 0m0.080s
sys 0m0.000s
[/code]

[ Voor 55% gewijzigd door pinball op 05-05-2003 11:26 ]

Whenever you find that you are on the side of the majority, it is time to reform.


  • blackd
  • Registratie: Februari 2001
  • Niet online
Pinball schreef op 05 May 2003 @ 11:18:
[jamaar mode]
jamaar met perl kun je gewoon:
code:
1
perl -pi -e 's/\sCEST/0000/g' bestand.xml
doen
[/jamaar]
code:
1
sed -ir {regex} bestand.xml

kan ook :P

9000Wp o/w SolarEdge SE6K - Panasonic 5kW bi-bloc - gasloos sinds 17-7-2023


Verwijderd

Leuk, al die workarounds, maar dat lost het originele probleem niet op: Waarom accepteert Freevo 0000 wel als tijdzone, maar CEST niet? (ik weet het niet, ik ken Freevo niet, maar wil de discussie best wel een beetje oprakelen)

  • CT
  • Registratie: September 2001
  • Laatst online: 05-05 16:27

CT

📱💻 🎮 ⌚🖥

Topicstarter
Ik heb HEEL veel flaws in Freevo gevonden :P Maar ik ben geen 'kei' in python en heb ook geen tijd me er in te verdiepen (ookal heb ik een aantal sources al aangepast maar de basis is dan ook wel duidelijk :P )

Freevo paast bijvoorbeeld alleen 'hele' channels naar de Mplayer, maar in NL heb je geen hele channels (op de tv) alleen bijv Channel 'S11 +11' ofzo dus heb ik alles aangepast om er Frequencies in te proppen.

Verder ben ik nu een TCL script aan het aanpassen die wel XML files maakt die Freevo snapt.
Je mag bijvoorbeeld ook geen '&' of 'e' met een streepje erop hebben :P in de xml..

Maar verder vind ik freevo wel 'beter' werken dan myHTPC of MythTV :P (maar dat is een discussie voor else where).

  • ny-hardcore
  • Registratie: Maart 2002
  • Laatst online: 05-05 16:35
sorry voor kick & OT

maar CT, welke grabber gebruik je voor freevo? en hoe pas je de TV.xml precies aan?

Heb btw wel gezien dat de nieuwe freevo een plugin heeft voor tv-time. (IMHO beter dan tv met mplayer)

cd /pub && more beer


  • CT
  • Registratie: September 2001
  • Laatst online: 05-05 16:27

CT

📱💻 🎮 ⌚🖥

Topicstarter
check dit draadje maar is. (vooral de laatste 2 pagina's) dan zie je dat het tragisch is afgelopen :P

Freevo pakt bij mij nu zelfs de tv_grab_nl_wolf niet meer.
Alleen nogmaar de tv_grab_nl maar die is zo gaar (allemaal overlappende dingen en on-kloppende tijden, en tv_sort doet er niks aan :( )
Pagina: 1