amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Andere Systeme > OT - CVS / sed Probleme [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

25.02.2002, 15:08 Uhr

Solar
Posts: 3680
Nutzer
Eine Frage an die Linuxer / bash Gurus unter uns.

Ich weiß, ist nicht unbedingt das richtige Forum, aber die Linux-Gemeinde hat sich mal wieder als so hilfreich wie üblich erwiesen (nämlich gar nicht)...

Ich müßte aus Unmengen Quellcode die CVS-Tags ($Id: ...$, $Header: ...$ etc.) bearbeiten. Ziel ist es, die Tags beizubehalten, jedoch die eingrenzenden '$' zu beseitigen.

Mit sed den gesamten Tag rauszuhauen, ist kein Problem. Aber wie lösche ich nur die eingrenzenden '$'?

Ich nehme auch entsprechende Links dankbar an, aber bitte nicht nochmal ein trockenes "man sed". Wenn ich die Lösung da drin gefunden hätte, würde ich nicht fragen...

[ - Antworten - Zitieren - Direktlink - ]

25.02.2002, 18:26 Uhr

Hammer
Posts: 2899
Nutzer
Hast Du es schon mal mit einem texteditor und dem Finden/Ersetzten Befehl ausprobiert?
--
MFG

Hammer

http://ThaHammer.3d-stuff.de/


Schreibt mir ins Gästebuch!!!!!!!!

[ - Antworten - Zitieren - Direktlink - ]

26.02.2002, 07:44 Uhr

Solar
Posts: 3680
Nutzer
Witzbold. :-D Es geht darum, das Ganze in ein Script zu verpacken, zwecks Wiederverwendbarkeit.

Außerdem, verrate mir doch mal, wie Du das im Texteditor machen willst:

In: $XYZ (beliebige Zeichenkette) $
Out: XYZ (beliebige Zeichenkette)

...?

[ Dieser Beitrag wurde von Solar am 26.02.2002 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

26.02.2002, 12:19 Uhr

DrNOP
Posts: 4118
Nutzer
Hi Solar.

[Suchen-Ersetzen]
Setze bei Suchen "$"
setze bei Ersetzen ""
schon sind die $ entfernt :D

Zwecks Skript:
Ich glaub kaum, daß Du dafür Windows und Word einsetzen willst? Da könntest Du den Windows Scripting Host benutzen. Word stellt solche Funktionen auch zur Verfügung, wenn es eigentlich gar nicht gestartet ist ... sofern man weiß, wie :D

Aber eine wirkliche Lösung kann ich Dir auch nicht anbieten, sorry :(

Gruß,
Dr.NOP

[ - Antworten - Zitieren - Direktlink - ]

26.02.2002, 12:27 Uhr

MrMarco
Posts: 445
Nutzer
Zitat:
Original von Solar:
Witzbold. :-D Es geht darum, das Ganze in ein Script zu verpacken, zwecks Wiederverwendbarkeit.

Außerdem, verrate mir doch mal, wie Du das im Texteditor machen willst:

In: $XYZ (beliebige Zeichenkette) $
Out: XYZ (beliebige Zeichenkette)

...?


Auch wenn du mich gleich in der Mittagspause deswegen jagst... nimm doch endlich Perl dafür... Bash.. .bah... nimm Perl :P

MfG
MrMarco

[ - Antworten - Zitieren - Direktlink - ]

26.02.2002, 13:47 Uhr

Solar
Posts: 3680
Nutzer
Zitat:
Original von DrNOP:

[Suchen-Ersetzen]
Setze bei Suchen "$"
setze bei Ersetzen ""
schon sind die $ entfernt :D


Du bist der König, wirklich. Nur dummerweise sind dann in PHP oder Shell-Scripten auch sämtliche Variablen weg, die fangen nämlich auch mit $ an... :-D

Zitat:
Ich glaub kaum, daß Du dafür Windows und Word einsetzen willst?

Unter der bash? Zeig mal, wie geht das... :-D

[ - Antworten - Zitieren - Direktlink - ]

26.02.2002, 15:10 Uhr

Harlekin
Posts:
[Ex-Mitglied]
http://www.rebol.com/platforms.html


http://www.rebol.com/download_manual.html



code:
REBOL [
	Title: "zonk"
	Date: 26-02-2002
	Datei: "zonk.r"
]

quelledatei: %quelldatei.txt
zieldatei:   %zieldatei.txt

quelle: read/lines quelledatei         ;Datei einlesen und in Zeilen aufteilen.

foreach zeile quelle [
 ergebniss: parse zeile ["$" copy bereinigt to "$" "$"] 

;ergebiss=true wenn am anfang der zeile ein $ dazwischen irgendwas und am ende auch ein $ ist.
;das 'irgendwas' wird in 'bereinigt' kopiert.

 either ergebniss [                    ;Wenn ergebniss=true.. 
  write/append zieldatei bereinigt     ;..bereinigt an zieldatei anfügen,
 ] [
  write/append zieldatei zeile         ;ansonsten unveränderte zeile an zieldatei anfügen.
  ]

 write/append zieldatei newline        ;zeilenumbruch anfügen.
]


Hab ich mal schnell zusammengehackt.
Kann man sicher noch viel 'kewler' schreiben aber ich glaube so ist es relativ verständlich (?) und scheint zu funktionieren.
Außerdem kann man mit Rebols parse Befehl noch viel raffiniertere Sachen anstellen :)
Viel Spaß beim Betriebssystem programmieren.

Die blöden backslashes vor den anführungszeichen gehören natürlich raus *grr*

[ Dieser Beitrag wurde von Harlekin am 26.02.2002 editiert. ]

[ - Ändern - Antworten - Zitieren - Direktlink - ]

26.02.2002, 15:49 Uhr

Solar
Posts: 3680
Nutzer
Du bist nicht zufällig Lennart Fridén nach einem Crash-Kurs in Deutsch? Der kommt nämlich auch bei jeder passenden und unpassenden Gelegenheit mit REBOL um die Ecke...

1) ist nicht gesagt, daß die Zeile mit $ beginnt und mit $ endet,
2) darfst Du nicht einfach alles zwischen zwei $ löschen - das können z.B. auch zwei PHP- oder Shell-Variablen sein...

Ansonsten würde ich Dir (im Spaße natürlich) genauso empfehlen, mal mein erstes Posting zu lesen - da ist die Rede von Linux und bash, nicht von REBOL. Ich möchte dem Anwender des zu erstellenden Scriptes nicht zumuten, wegen sowas erst einmal REBOL installieren zu müssen.

Vielen Dank übrigens an Jasper, der im Heise-Forum die Antwort lieferte, und Marco Frischkorn, mit dem ich sie noch etwas verfeinerte:

perl -pi.bak -e 's/$([Author|Date|Header|Id|Locker|Name|RCSfile|Revision|Source|Sta te|Log]+?:.+?)$/1/g' "$file"
rm "$file.bak"

(Der Umweg über .bak war nötig, um's auch unter CygWin zum Laufen zu bringen. Und im Gegensatz zu REBOL gehört Perl unter bash durchaus zu den "Bordmitteln"... ;-) )

[ Dieser Beitrag wurde von Solar am 26.02.2002 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

26.02.2002, 16:08 Uhr

Hammer
Posts: 2899
Nutzer
Zitat:
Original von Solar:
Witzbold. :-D Es geht darum, das Ganze in ein Script zu verpacken, zwecks Wiederverwendbarkeit.

Außerdem, verrate mir doch mal, wie Du das im Texteditor machen willst:

In: $XYZ (beliebige Zeichenkette) $
Out: XYZ (beliebige Zeichenkette)

...?

[ Dieser Beitrag wurde von Solar am 26.02.2002 editiert. ]


War kein Witz! War nur als erste Hilfe gedacht. Das im Texteditor ist wirklich so einfach. Finden:$ Ersetzen:""
Aber wenn es Dir dann andere Programmteile zerschiesst ist es natürlich unbrauchbar. Und den Code kenne ich ja nicht, also mach mal langsam! :D

--
MFG

Hammer

http://ThaHammer.3d-stuff.de/


Schreibt mir ins Gästebuch!!!!!!!!

[ - Antworten - Zitieren - Direktlink - ]

26.02.2002, 16:11 Uhr

MrMarco
Posts: 445
Nutzer
Hum... warst mal wieder schnell mit dem Posten als ich... Hätte das wohl gleich nach unserem Telefonat machen sollen :/

code:
# ********************************************************************** **********
# * Name                : clean_up.pl                                            *
# *                                                                              *
# * Beschreibung        : Dient zum entfernen von 2 aufeinander folgenden $ in   *
# *                       einer (!) Sourcecodezeile. Alle weiteren oder nur ein  *
# *                       $ sollen ignoriert und nicht verändert werden und im   *
# *                       Text erhalten bleiben.                                 *
# *                                                                              *
# * Autor               : Marco Frischkorn [MF]                                  *
# * Datum               : 26.02.2002                                             *
# * ---------------------------------------------------------------------- -------*
# * HighAnt Development 2002                                                     *
# * ---------------------------------------------------------------------- -------*
# * Letzte Änderung     : 26.02.2002                                             *
# * Geändert von        : Marco Frischkorn [MF]                                  *
# ********************************************************************** **********
# * Änderungen:                                                                  *
# *                                                                              *
# *  lfdnr    Datum        Name    Bemerkung:                                    *
# ********************************************************************** **********
# *  [1]     26.02.2002    [MF]    Initial Release                               *
# *                                                                              *
# ********************************************************************** **********

use strict;

my $strFilename = "test.txt";

# Now we read all lines and use a regular expression on it
open(INFILE, "<$strFilename") || die("Error!nFile $strFilename not found!n");

  while( <INFILE> )
  {

    # We only want to Look for Id: and/or Name:
    # Only for Example :) 
    s/$([ID|Name]+?:.+?)$/1/gi;
    print $_;
  }

close(INFILE);

exit(0);



:P Ja... schlag mich :P

Hehehehe... Aber das sollte eigentlich auch in der Bash funktionieren OHNE gleich Perl aufrufen zu müssen... :)

MfG
MrMarco


[ Dieser Beitrag wurde von MrMarco am 26.02.2002 editiert. ]

[ Dieser Beitrag wurde von MrMarco am 26.02.2002 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

26.02.2002, 16:14 Uhr

MrMarco
Posts: 445
Nutzer
grummel... verflixter Zeilenumbruch... Irgendwann hack ich mir ein eigenes Eingabeformular für das Forum zusammen... grummel...

[ - Antworten - Zitieren - Direktlink - ]

26.02.2002, 16:43 Uhr

Harlekin
Posts:
[Ex-Mitglied]
Zitat:
Du bist nicht zufällig Lennart Fridén nach einem Crash-Kurs in Deutsch?
Nein.

Zitat:
Der kommt nämlich auch bei jeder passenden und unpassenden Gelegenheit mit REBOL um die Ecke...
Ja, sowas kann nerven.
Mein Fehler.

Zitat:
1) ist nicht gesagt, daß die Zeile mit $ beginnt und mit $ endet,
Mist! Dabei hast du dich so präzise ausgedrückt.
Wieder mein Fehler.

Zitat:
2) darfst Du nicht einfach alles zwischen zwei $ löschen - das können z.B. auch zwei PHP- oder Shell-Variablen sein...
Hmm, gelöscht wird da eigenltich nix.
Wahrscheinlich trotzdem mein Fehler.

Zitat:
Ansonsten würde ich Dir (im Spaße natürlich) genauso empfehlen, mal mein erstes Posting zu lesen - da ist die Rede von Linux und bash, nicht von REBOL. Ich möchte dem Anwender des zu erstellenden Scriptes nicht zumuten, wegen sowas erst einmal REBOL installieren zu müssen.
Da ich hier auf Arbeit zwar alle Arten von Win habe aber weder Linux noch bash, R**** so ziemlich überall läuft, in 30sek installiert ist, und da man in das Skript noch lustigeres hätte einbauen können, dachte ich Mir (im Spaße natürlich) das ist besser als nichts.
Auch mein Fehler.

Zitat:
perl -pi.bak -e 's/$([Author|Date|Header|Id|Locker|Name|RCSfile|Revision|Source|Sta te|Log]+?:.+?)$/1/g' "$file"
rm "$file.bak"

Ja, das sieht schon viel besser aus. Hätte ich selber drauf kommen müssen.
Natürlich mein Fehler.

Zitat:
Und im Gegensatz zu REBOL gehört Perl unter bash durchaus zu den "Bordmitteln"... ;-) )
Verdammt. Du hast schon wieder recht!
Muß ich mir jetzt blöd vorkommen?

Schönen Tag noch.


[ - Ändern - Antworten - Zitieren - Direktlink - ]

26.02.2002, 18:14 Uhr

Solar
Posts: 3680
Nutzer
@ Harlekin:

Da in Deinem Posting jeglicher Smiley fehlt, gehe ich mal davon aus, daß Du Dir auf den Schlips getreten fühlst. Das tut mir leid, denn es war mit Sicherheit nicht beabsichtigt. :(

[ - Antworten - Zitieren - Direktlink - ]

27.02.2002, 10:12 Uhr

Solar
Posts: 3680
Nutzer
Andersrum habe ich auch mit Smileys gespart, also ist das wahrscheinlich mein Fehler. Ist eCommunication nicht etwas feines... :-(

[ - Antworten - Zitieren - Direktlink - ]

27.02.2002, 10:31 Uhr

Hammer
Posts: 2899
Nutzer
Zitat:
Original von Solar:
Andersrum habe ich auch mit Smileys gespart, also ist das wahrscheinlich mein Fehler. Ist eCommunication nicht etwas feines... :-(



Ja! :D
--
MFG

Hammer

http://ThaHammer.3d-stuff.de/


Schreibt mir ins Gästebuch!!!!!!!!

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Andere Systeme > OT - CVS / sed Probleme [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.