Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Dateien via Script editieren?
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Mon May 28, 2007 3:45 pm    Post subject: Dateien via Script editieren? Reply with quote

Hallo Zusammen,

ich bräuchte mal Hilfe bei der Erstellung eines Scripts.

Das Script soll folgendes machen:

- Öffne die Datei blabla.abc
- Lösche alle Zeilen die NICHT beginnen mit: abcb, oder 1234, oder asdf, oder 2222.

Ich denke mal für die Profis unter Euch sollte das kein Problem sein, oder?

1000 Dank schonmal im Voraus

cu
3PO
Back to top
View user's profile Send private message
think4urs11
Bodhisattva
Bodhisattva


Joined: 25 Jun 2003
Posts: 6659
Location: above the cloud

PostPosted: Mon May 28, 2007 3:59 pm    Post subject: Re: Dateien via Script editieren? Reply with quote

Code:
$ fgrep -v -f ~/das.muss.weg blabla.abc

Code:
$ cat ~/das.muss.weg
abcb
1234
asdf
2222

_________________
Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Mon May 28, 2007 4:09 pm    Post subject: Reply with quote

Danke erstmal für die schnelle Antwort, aber kontest Du bitte ein klein wenig ausführlicher schreinen?

Ich bin nämlich albsoluter n00b in Shellscrips.

Danke
Back to top
View user's profile Send private message
think4urs11
Bodhisattva
Bodhisattva


Joined: 25 Jun 2003
Posts: 6659
Location: above the cloud

PostPosted: Mon May 28, 2007 4:21 pm    Post subject: Reply with quote

3PO wrote:
Danke erstmal für die schnelle Antwort, aber kontest Du bitte ein klein wenig ausführlicher schreinen?

Ich bin nämlich albsoluter n00b in Shellscrips.

Danke

das Kommando liest aus der Datei 'das.muss.weg' die Strings aus die gefiltert werden sollen (-f)
-v kehrt das Suchergebniss um, d.h. es werden nur noch Zeilen ausgegeben die 'Muster' nicht enthalten
_________________
Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself
Back to top
View user's profile Send private message
think4urs11
Bodhisattva
Bodhisattva


Joined: 25 Jun 2003
Posts: 6659
Location: above the cloud

PostPosted: Mon May 28, 2007 4:34 pm    Post subject: Reply with quote

hmm das mit dem 'nicht BEGINNEN' hab ich wohl überlesen... so geht es auch:
Code:
sed -i.bak -r '/^1234|^2222|^abcb|^asdf/d' blabla.abc


Erstellt zuerst ein Backup blabla.abc.bak und löcht dann aus blabla.abc alle Zeilen die mit einem der Suchmuster BEGINNEN
^Muster bedeutet: am Anfang einer neuen Zeile steht 'Muster'
_________________
Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Mon May 28, 2007 4:57 pm    Post subject: Reply with quote

Irgenwie funktioniert das nicht.

Es wird zwar eine blabla.abc.bak angelegt, aber in der originalen Datei wird nichts verändert.
Back to top
View user's profile Send private message
l3u
Advocate
Advocate


Joined: 26 Jan 2005
Posts: 2610
Location: Konradsreuth (Germany)

PostPosted: Mon May 28, 2007 6:07 pm    Post subject: Reply with quote

Naja, was willst du mehr als diese .bak-Datei? Dann machst halt noch ein
Code:
mv blabla.abc.bak blabla.abc

Und gut!

Ergänzend noch die Perl-Lösung:
Code:
#!/usr/bin/perl
while(<>) {
        next if /^123/ or /^456/ or /^abc/;
        print;
}

zu benutzen mittels
Code:
cat datei | script > zieldatei
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Mon May 28, 2007 7:00 pm    Post subject: Reply with quote

Danke erstmal für die Vorschläge, ich werde mich mal die Tage damit auseinandersetzen.

btw: Für was sind denn die "^" gut?
Back to top
View user's profile Send private message
musv
Advocate
Advocate


Joined: 01 Dec 2002
Posts: 3366
Location: de

PostPosted: Mon May 28, 2007 7:07 pm    Post subject: Reply with quote

3PO wrote:
btw: Für was sind denn die "^" gut?

Damit werden alle Zeilen, die mit den nachfolgend aufgelisteten Buchstaben beginnen, ignoriert - auch Negation genannt.

http://de.wikipedia.org/wiki/Regulärer_Ausdruck

PS: Das Gentoo-Forum scheint Probleme mit Umlauten in der URL zu haben
Back to top
View user's profile Send private message
think4urs11
Bodhisattva
Bodhisattva


Joined: 25 Jun 2003
Posts: 6659
Location: above the cloud

PostPosted: Mon May 28, 2007 7:32 pm    Post subject: Reply with quote

3PO wrote:
Irgenwie funktioniert das nicht.

Es wird zwar eine blabla.abc.bak angelegt, aber in der originalen Datei wird nichts verändert.

Lese/Schreibrechte auf blabla.abc hast du? Hier funktioniert das einwandfrei
_________________
Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself
Back to top
View user's profile Send private message
l3u
Advocate
Advocate


Joined: 26 Jan 2005
Posts: 2610
Location: Konradsreuth (Germany)

PostPosted: Mon May 28, 2007 8:43 pm    Post subject: Reply with quote

@musv: nein. In dem Fall bedeutet das ^, daß die nachfolgende Zeichenkette am Anfang des zu untersuchenden Strings stehen muß. Was du meinst, ist was wie /[^xyz]/
Back to top
View user's profile Send private message
Soneji
n00b
n00b


Joined: 14 May 2005
Posts: 13
Location: Magdeburg/Germany

PostPosted: Tue May 29, 2007 6:27 pm    Post subject: Reply with quote

Nur der Vollstaendigkeit halber:

Falls du das File direkt bearbeiten moechtest, kann die Perl-Loesung auf folgende 2 Zeilen vereinfacht werden:

Code:

#!/usr/bin/perl -ni
print if /^abcb/ or /^1234/ or /^2222/;


Zu benutzen:
Code:

perl <skript> <zu_aenderndes_file>


Oder falls du das oefter brauchst natuerlich nach einem chmod:
Code:

<skript> <zu_aenderndes_file>
Back to top
View user's profile Send private message
l3u
Advocate
Advocate


Joined: 26 Jan 2005
Posts: 2610
Location: Konradsreuth (Germany)

PostPosted: Wed May 30, 2007 1:52 pm    Post subject: Reply with quote

Code:

#!/usr/bin/perl -ni
print if !/^abcb/ and !/^1234/ and !/^2222/;

;-)
Back to top
View user's profile Send private message
Silicoid
Tux's lil' helper
Tux's lil' helper


Joined: 20 Jul 2004
Posts: 144
Location: Erde

PostPosted: Wed May 30, 2007 2:52 pm    Post subject: Reply with quote

Code:

#!/usr/bin/perl -ni
print if ! (/^abcb/ or /^1234/ or /^2222/);

;-) ;-)
Back to top
View user's profile Send private message
Knieper
l33t
l33t


Joined: 10 Nov 2005
Posts: 846

PostPosted: Wed May 30, 2007 3:32 pm    Post subject: Re: Dateien via Script editieren? Reply with quote

Think4UrS11 wrote:
Code:
$ fgrep -v -f ~/das.muss.weg blabla.abc

Code:
$ cat ~/das.muss.weg
abcb
1234
asdf
2222


Statt fgrep egrep und an den Zeilenanfang das '^', dann stimmt's.

Code:
$ egrep -v -f ~/das.muss.weg blabla.abc

Code:

$ cat ~/das.muss.weg
^abcb
^1234
^asdf
^2222
Back to top
View user's profile Send private message
schmutzfinger
Veteran
Veteran


Joined: 26 Oct 2003
Posts: 1287
Location: Dresden/Germany

PostPosted: Wed May 30, 2007 7:23 pm    Post subject: Reply with quote

Code:
grep -E "(^abcb|^1234|^asdf|^2222)" datei.alt > datei.neu


Warum Dateien oder Perl-Script anlegen wenns auch in einer Zeile geht?
Back to top
View user's profile Send private message
Knieper
l33t
l33t


Joined: 10 Nov 2005
Posts: 846

PostPosted: Wed May 30, 2007 9:24 pm    Post subject: Reply with quote

schmutzfinger wrote:
Code:
grep -E "(^abcb|^1234|^asdf|^2222)" datei.alt > datei.neu


Warum Dateien oder Perl-Script anlegen wenns auch in einer Zeile geht?


Weil in eine Datei beliebig viele Suchmuster passen, in Deine Kommandozeile aber nicht.
Back to top
View user's profile Send private message
musv
Advocate
Advocate


Joined: 01 Dec 2002
Posts: 3366
Location: de

PostPosted: Wed May 30, 2007 9:51 pm    Post subject: Reply with quote

Knieper wrote:

Weil in eine Datei beliebig viele Suchmuster passen, in Deine Kommandozeile aber nicht.

Auch eine Datei ist endlich.... (irgendwann mal).
Back to top
View user's profile Send private message
Knieper
l33t
l33t


Joined: 10 Nov 2005
Posts: 846

PostPosted: Thu May 31, 2007 7:46 am    Post subject: Reply with quote

musv wrote:
Knieper wrote:

Weil in eine Datei beliebig viele Suchmuster passen, in Deine Kommandozeile aber nicht.

Auch eine Datei ist endlich.... (irgendwann mal).


Das ist doch eher theoretischer Natur oder wuerdest Du dann noch egrep einsetzen?
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum