Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
sed-Wissen aus der Praxis für Noobs und Geeks
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

Goto page Previous  1, 2, 3, 4, 5, 6, 7  Next  
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
sirro
Veteran
Veteran


Joined: 20 Jul 2003
Posts: 1472
Location: aachen.nrw.de.eu

PostPosted: Wed Jan 02, 2008 10:31 am    Post subject: Reply with quote

3PO wrote:
1.] sed /<Verzeicnis>/* funftioniert nicht, wenn ich diesem Verzeichnis noch andere Verzeichnisse liegen.

Code:
find verzeichnis/ -maxdepth 1 -type f -exec sed -i 's#xxx#test#' {} \;

Mit maxdepth kannst du einstellen, dass nur dateien der ersten Ebene des Dateibaums genommen werden falls das gewünscht ist. Falls auch Dateien in Unterverzeichnissen genommen werden sollen einfach das maxdepth weglassen.
-type f sagt, dass nur Dateien genommen werden sollen (keine Verzeichnisse oder anderes)
{} ist die aktuelle Datei.

Quote:
2.] Leider habe ich auch noch Dateien, die keine Extension haben, - d.h. dass z.B. *.txt oder *.* in diesem Fall auch nicht geht.

gleicher Anfang des Namens könnte auch helfen, falls du sowas hast. Sonst s.o.
Back to top
View user's profile Send private message
schachti
Advocate
Advocate


Joined: 28 Jul 2003
Posts: 3765
Location: Gifhorn, Germany

PostPosted: Wed Jan 02, 2008 10:35 am    Post subject: Reply with quote

ok, dann bietet sich entweder die Variante mit der for-Schleife an,

Code:

for FILE in $(ls --color=never VERZEICHNIS); do
  sed -i VERZEICHNIS/"${FILE}" -e "/^#\.*/d"
done


(die allerdings nicht funktioniert, wenn es Dateinamen gibt, die Leerzeichen enthalten - dann muss man mehr Aufwand treiben), oder Du ergänzt find um -maxdepth 1 (was den Vorteil hast, dass Du weitere Tests, die find bietet (letzter Zugriff, Eigentümer etc.), nutzen kannst, und dass auch Dateien mit Leerzeichen im Namen keine Probleme machen):

Code:

find VERZEICHNIS -maxdepth 1 -type f -exec sed -i {} -e "/^$/d" \;


EDIT: Es muss -maxdepth 1 heißen, nicht -maxdepth 0. :oops:
_________________
Never argue with an idiot. He brings you down to his level, then beats you with experience.

How-To: Daten verschlüsselt auf DVD speichern.
Back to top
View user's profile Send private message
think4urs11
Bodhisattva
Bodhisattva


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

PostPosted: Wed Jan 02, 2008 10:38 am    Post subject: Reply with quote

3PO wrote:
Genau das will ich nicht. :lol:

man pages lesen bildet ;)

find /kram/blatest/ -depth -maxdepth 1 -type f -exec sed -ie 's/bla/blubb/' {} \;
_________________
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: Wed Jan 02, 2008 12:14 pm    Post subject: Reply with quote

Quote:
find /kram/blatest/ -depth -maxdepth 1 -type f -exec sed -ie 's/bla/blubb/' {} \;


Jetzt hänge bei -exec :cry:

Code:
find: missing argument to `-exec'



Quote:
man pages lesen bildet


Stimmt ! :lol:
Back to top
View user's profile Send private message
think4urs11
Bodhisattva
Bodhisattva


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

PostPosted: Wed Jan 02, 2008 12:30 pm    Post subject: Reply with quote

nach {} muß ein Leerzeichen sein, also {} \ und nicht {}\
_________________
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: Sun Mar 23, 2008 12:22 pm    Post subject: Linefeed entfernen mit sed? Reply with quote

Hallo Zusammen,

ich habe folgendes Problem.

Ich habe eine Textdatei, die folgendermasen aufgebaut ist:

Code:
text1
~irgendwastext1
text2
~irgendwastext2
text3
~irgendwastext3
...usw


D.h. jede 2te Zeilen beginnt mit einem "~"

Wie kann ich nun mit z.B. mit sed die Ausgabe ändern in:

Code:
text1~irgendwastext1
text2~irgendwastext2
text3~irgendwastext3
...usw


Geht das überhaupt, und falls ja, wie?

Ich bin über jeden Tipp dankbar.
Back to top
View user's profile Send private message
think4urs11
Bodhisattva
Bodhisattva


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

PostPosted: Sun Mar 23, 2008 12:45 pm    Post subject: Reply with quote

meinst du sowas?
Code:
sed '$!N;s/\n/ /' inputfile


an den sed-Sammelthread angehangen
_________________
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
firefly
Watchman
Watchman


Joined: 31 Oct 2002
Posts: 5165

PostPosted: Sun Mar 23, 2008 1:18 pm    Post subject: Reply with quote

Think4UrS11 wrote:
meinst du sowas?
Code:
sed '$!N;s/\n/ /' inputfile


an den sed-Sammelthread angehangen

Code:
eher sed '$!N;s/\n~/ /' inputfile

weil sonst hat er alles in einer zeile aber er will ja nur die zeilen mit einer "~" am anfang in die zeile davor "verschieben"
_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
Back to top
View user's profile Send private message
Finswimmer
Bodhisattva
Bodhisattva


Joined: 02 Sep 2004
Posts: 5467
Location: Langen (Hessen), Germany

PostPosted: Sun Mar 23, 2008 1:23 pm    Post subject: Reply with quote

Code:
sed '$!N;s/\n~/~/' t1


ergibt:

Code:
text1~irgendwastext1
text2~irgendwastext2
text3~irgendwastext3
testx
test2

Tobi

P.S. Aller guten Dinge sind drei ;)
_________________
Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4565

PostPosted: Sun Mar 23, 2008 1:30 pm    Post subject: Reply with quote

firefly wrote:
Think4UrS11 wrote:
meinst du sowas?
Code:
sed '$!N;s/\n/ /' inputfile


an den sed-Sammelthread angehangen

Code:
eher sed '$!N;s/\n~/ /' inputfile

:cry:
Code:
$ eher sed '$!N;s/\n~/ /' inputfile
bash: eher: command not found

Und man sollte evtl. noch Leerzeichen am Anfang und Ende jeder Zeile entfernen, sonst gibt es sowas:
Code:
$ sed '$!N;s/\n//' inputfile
text1 ~irgendwastext1
text2 ~irgendwastext2
text3 ~irgendwastext3
...usw
Back to top
View user's profile Send private message
Finswimmer
Bodhisattva
Bodhisattva


Joined: 02 Sep 2004
Posts: 5467
Location: Langen (Hessen), Germany

PostPosted: Sun Mar 23, 2008 1:34 pm    Post subject: Reply with quote

Ihr habt immer dann Fehler, wenn es Zeilenanfänge gibt, die nicht mit "~" beginnen.
Denn die sollen nicht in die vorangehende Zeile rutschen...

Gehe ich jedenfalls von aus ;)

Tobi
_________________
Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke
Back to top
View user's profile Send private message
Finswimmer
Bodhisattva
Bodhisattva


Joined: 02 Sep 2004
Posts: 5467
Location: Langen (Hessen), Germany

PostPosted: Sun Mar 23, 2008 1:47 pm    Post subject: Reply with quote

Was macht eigentlich dieses $!N;

Tobi
_________________
Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
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: Sun Mar 23, 2008 2:35 pm    Post subject: Reply with quote

Die Anforderung war aber 'jede zweite Zeile beginnt mit ~ und soll an die vorherige angehangen werden'; d.h. auf Sonderfälle braucht nicht eingegangen zu werden; von daher war mein Vorschlag schon richtig bis auf den Tippfehler /<space>/ statt richtig //
_________________
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
Finswimmer
Bodhisattva
Bodhisattva


Joined: 02 Sep 2004
Posts: 5467
Location: Langen (Hessen), Germany

PostPosted: Sun Mar 23, 2008 2:44 pm    Post subject: Reply with quote

Think4UrS11 wrote:
Die Anforderung war aber 'jede zweite Zeile beginnt mit ~ und soll an die vorherige angehangen werden'; d.h. auf Sonderfälle braucht nicht eingegangen zu werden; von daher war mein Vorschlag schon richtig bis auf den Tippfehler /<space>/ statt richtig //


Red dich nur raus ;)

$!N; verstehe ich aber immernoch nicht...

Tobi
_________________
Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


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

PostPosted: Mon Mar 24, 2008 9:40 am    Post subject: Reply with quote

:arrow: Danke, hat funktioniert. :lol:
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


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

PostPosted: Sat Apr 05, 2008 5:40 pm    Post subject: Reply with quote

Und wieder mal eine Frage.... :lol:

Ich möchte aus einer Datei mit folgendem Inhalt, das rot geschriebene entfernen:

Quote:
01000005;0100 0005 (Old) Stream
05007C00;0500 007C00 TPS (13E)
05008000;0500 008000 (Old) FTC
01003311;0100 3311 CanalSat France (19E)
01003315;0100 3315 Canal+ France (19E)
01003317;0100 3317 CanalPro France (19E)
.......
usw.


Ist da sed das Richtige, oder gibt es eine andere Möglichkeit?
Back to top
View user's profile Send private message
firefly
Watchman
Watchman


Joined: 31 Oct 2002
Posts: 5165

PostPosted: Sat Apr 05, 2008 6:01 pm    Post subject: Reply with quote

wenn man die Anforderung, was gelöscht werden soll in einen regulären Ausdruck ausdrücken kann, dann sollte es mit sed und co funktionieren.
EDIT:

hier der reguläre Ausdruck zu deiner Anforderung (ohne die "):
";[0-9]* [0-9]*"
_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.


Last edited by firefly on Sat Apr 05, 2008 6:06 pm; edited 1 time in total
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


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

PostPosted: Sat Apr 05, 2008 6:05 pm    Post subject: Reply with quote

Was ist ein "regulärer Ausdruck"? :?:
Back to top
View user's profile Send private message
firefly
Watchman
Watchman


Joined: 31 Oct 2002
Posts: 5165

PostPosted: Sat Apr 05, 2008 6:10 pm    Post subject: Reply with quote

3PO wrote:
Was ist ein "regulärer Ausdruck"? :?:

siehe http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck

und so sieht dann die sed-zeile aus, mit dem Regulären ausdruck den ich im meinem letzten Post per Edit angegeben habe:

Code:
sed 's/\;[0-9]* [0-9]*//g'


test.data wrote:
01000005;0100 0005 (Old) Stream
05007C00;0500 007C00 TPS (13E)
05008000;0500 008000 (Old) FTC
01003311;0100 3311 CanalSat France (19E)
01003315;0100 3315 Canal+ France (19E)
01003317;0100 3317 CanalPro France (19E)
sdfgsgh;sldfjs lsdf CanalPro France (19E)


Ergebnis:
Quote:
01000005 (Old) Stream
05007C00C00 TPS (13E)
05008000 (Old) FTC
01003311 CanalSat France (19E)
01003315 Canal+ France (19E)
01003317 CanalPro France (19E)
sdfgsgh;sldfjs lsdf CanalPro France (19E)

_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
Back to top
View user's profile Send private message
sirro
Veteran
Veteran


Joined: 20 Jul 2003
Posts: 1472
Location: aachen.nrw.de.eu

PostPosted: Sat Apr 05, 2008 6:21 pm    Post subject: Reply with quote

firefly wrote:
";[0-9]* [0-9]*"

Im zweiten Teil kommt ein Buchstabe (C) vor. Also eher [0-9C] oder gleich [0-9A-Z]. Kommt halt auf die Quelldaten an.
Besonders viel würde z.B. [^ ] fressen.
Back to top
View user's profile Send private message
firefly
Watchman
Watchman


Joined: 31 Oct 2002
Posts: 5165

PostPosted: Sat Apr 05, 2008 6:36 pm    Post subject: Reply with quote

sirro wrote:
firefly wrote:
";[0-9]* [0-9]*"

Im zweiten Teil kommt ein Buchstabe (C) vor. Also eher [0-9C] oder gleich [0-9A-Z]. Kommt halt auf die Quelldaten an.
Besonders viel würde z.B. [^ ] fressen.

ups übersehen, scheinen sich um hex zahlen zu handeln dann wäre
[0-9A-F] sinnvoller
_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


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

PostPosted: Sat Apr 05, 2008 6:54 pm    Post subject: Reply with quote

Lösung gefunden.

so gehts: :wink:

Code:
sed -e "s/;[0-9A-F]* [0-9A-F]* /; /" -e "s/;[0-9A-F]* /; /"


Danke nochmals für die Tipps. :wink:
Back to top
View user's profile Send private message
firefly
Watchman
Watchman


Joined: 31 Oct 2002
Posts: 5165

PostPosted: Sat Apr 05, 2008 7:03 pm    Post subject: Reply with quote

3PO wrote:
Lösung gefunden.

so gehts: :wink:

Code:
sed -e "s/;[0-9A-F]* [0-9A-F]* /; /" -e "s/;[0-9A-F]* /; /"


Danke nochmals für die Tipps. :wink:

also der 2. Ausdruck ist doch unnötig, zu mindestens auf deine Anfangs angegebene Anforderung.
_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


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

PostPosted: Sat Apr 05, 2008 7:34 pm    Post subject: Reply with quote

firefly wrote:
also der 2. Ausdruck ist doch unnötig, zu mindestens auf deine Anfangs angegebene Anforderung.


Das hast du Recht... :lol:

Allerdings sind auch solche Einträge vorhanden:

Code:
22000000;2200 Inmedia (5E/60E)
223B0000;223B Bundestag (23E)
22E20000;22E2 National TV (16E)


(Habe ich zu spät gesehen... :oops: )


Last edited by 3PO on Sat Apr 05, 2008 7:48 pm; edited 1 time in total
Back to top
View user's profile Send private message
firefly
Watchman
Watchman


Joined: 31 Oct 2002
Posts: 5165

PostPosted: Sat Apr 05, 2008 7:40 pm    Post subject: Reply with quote

der 2. Ausruck ist unnötig, da der Ausdruck
Quote:
[0-9A-F]* [0-9A-F]*

auch deinen 2. Fall
Code:
22000000;2200 Inmedia (5E/60E)

abdeckt.
Denn das * im regulären ausdruck nach den [] steht für 0-n mal sprich eines der Zeichen kommt 0-n mal im gesuchten Ausdruck vor.

EDIT: Ah ok ich habe das letzte leerzeichen in deinen Ausdrücken übersehen.
_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
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
Goto page Previous  1, 2, 3, 4, 5, 6, 7  Next
Page 3 of 7

 
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