Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Deutsches Forum (German) Diskussionsforum
  • Search

sed-Wissen aus der Praxis für Noobs und Geeks

Unterhaltung über Gentoo und andere Themen: Alles was nicht in ein Support-Forum gehört.
Post Reply
  • Print view
Advanced search
162 posts
  • Page 3 of 7
    • Jump to page:
  • Previous
  • 1
  • 2
  • 3
  • 4
  • 5
  • …
  • 7
  • Next
Author
Message
sirro
Veteran
Veteran
User avatar
Posts: 1472
Joined: Sun Jul 20, 2003 6:15 pm
Location: aachen.nrw.de.eu

  • Quote

Post by sirro » Wed Jan 02, 2008 10:31 am

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

Code: Select all

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.
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.
Top
schachti
Advocate
Advocate
User avatar
Posts: 3765
Joined: Mon Jul 28, 2003 10:01 am
Location: Gifhorn, Germany

  • Quote

Post by schachti » Wed Jan 02, 2008 10:35 am

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

Code: Select all

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: Select all

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.
Top
think4urs11
Bodhisattva
Bodhisattva
User avatar
Posts: 6659
Joined: Wed Jun 25, 2003 9:51 pm
Location: above the cloud

  • Quote

Post by think4urs11 » Wed Jan 02, 2008 10:38 am

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
Top
3PO
Veteran
Veteran
User avatar
Posts: 1110
Joined: Sun Nov 26, 2006 11:38 am
Location: Schwabenländle

  • Quote

Post by 3PO » Wed Jan 02, 2008 12:14 pm

find /kram/blatest/ -depth -maxdepth 1 -type f -exec sed -ie 's/bla/blubb/' {} \;
Jetzt hänge bei -exec :cry:

Code: Select all

find: missing argument to `-exec'
man pages lesen bildet
Stimmt ! :lol:
Top
think4urs11
Bodhisattva
Bodhisattva
User avatar
Posts: 6659
Joined: Wed Jun 25, 2003 9:51 pm
Location: above the cloud

  • Quote

Post by think4urs11 » Wed Jan 02, 2008 12:30 pm

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
Top
3PO
Veteran
Veteran
User avatar
Posts: 1110
Joined: Sun Nov 26, 2006 11:38 am
Location: Schwabenländle

Linefeed entfernen mit sed?

  • Quote

Post by 3PO » Sun Mar 23, 2008 12:22 pm

Hallo Zusammen,

ich habe folgendes Problem.

Ich habe eine Textdatei, die folgendermasen aufgebaut ist:

Code: Select all

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: Select all

text1~irgendwastext1
text2~irgendwastext2
text3~irgendwastext3
...usw
Geht das überhaupt, und falls ja, wie?

Ich bin über jeden Tipp dankbar.
Top
think4urs11
Bodhisattva
Bodhisattva
User avatar
Posts: 6659
Joined: Wed Jun 25, 2003 9:51 pm
Location: above the cloud

  • Quote

Post by think4urs11 » Sun Mar 23, 2008 12:45 pm

meinst du sowas?

Code: Select all

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
Top
firefly
Watchman
Watchman
Posts: 5385
Joined: Thu Oct 31, 2002 8:24 pm

  • Quote

Post by firefly » Sun Mar 23, 2008 1:18 pm

Think4UrS11 wrote:meinst du sowas?

Code: Select all

sed '$!N;s/\n/ /' inputfile
an den sed-Sammelthread angehangen

Code: Select all

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.
Top
Finswimmer
Bodhisattva
Bodhisattva
User avatar
Posts: 5467
Joined: Thu Sep 02, 2004 3:46 pm
Location: Langen (Hessen), Germany

  • Quote

Post by Finswimmer » Sun Mar 23, 2008 1:23 pm

Code: Select all

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

Code: Select all

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
Top
franzf
Advocate
Advocate
User avatar
Posts: 4565
Joined: Tue Mar 29, 2005 9:06 am

  • Quote

Post by franzf » Sun Mar 23, 2008 1:30 pm

firefly wrote:
Think4UrS11 wrote:meinst du sowas?

Code: Select all

sed '$!N;s/\n/ /' inputfile
an den sed-Sammelthread angehangen

Code: Select all

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

Code: Select all

$ 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: Select all

$ sed '$!N;s/\n//' inputfile
text1 ~irgendwastext1
text2 ~irgendwastext2
text3 ~irgendwastext3
...usw
Top
Finswimmer
Bodhisattva
Bodhisattva
User avatar
Posts: 5467
Joined: Thu Sep 02, 2004 3:46 pm
Location: Langen (Hessen), Germany

  • Quote

Post by Finswimmer » Sun Mar 23, 2008 1:34 pm

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
Top
Finswimmer
Bodhisattva
Bodhisattva
User avatar
Posts: 5467
Joined: Thu Sep 02, 2004 3:46 pm
Location: Langen (Hessen), Germany

  • Quote

Post by Finswimmer » Sun Mar 23, 2008 1:47 pm

Was macht eigentlich dieses $!N;

Tobi
Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke
Top
think4urs11
Bodhisattva
Bodhisattva
User avatar
Posts: 6659
Joined: Wed Jun 25, 2003 9:51 pm
Location: above the cloud

  • Quote

Post by think4urs11 » Sun Mar 23, 2008 2:35 pm

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
Top
Finswimmer
Bodhisattva
Bodhisattva
User avatar
Posts: 5467
Joined: Thu Sep 02, 2004 3:46 pm
Location: Langen (Hessen), Germany

  • Quote

Post by Finswimmer » Sun Mar 23, 2008 2:44 pm

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
Top
3PO
Veteran
Veteran
User avatar
Posts: 1110
Joined: Sun Nov 26, 2006 11:38 am
Location: Schwabenländle

  • Quote

Post by 3PO » Mon Mar 24, 2008 9:40 am

:arrow: Danke, hat funktioniert. :lol:
Top
3PO
Veteran
Veteran
User avatar
Posts: 1110
Joined: Sun Nov 26, 2006 11:38 am
Location: Schwabenländle

  • Quote

Post by 3PO » Sat Apr 05, 2008 5:40 pm

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

Ich möchte aus einer Datei mit folgendem Inhalt, das rot geschriebene entfernen:
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?
Top
firefly
Watchman
Watchman
Posts: 5385
Joined: Thu Oct 31, 2002 8:24 pm

  • Quote

Post by firefly » Sat Apr 05, 2008 6:01 pm

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]*"
Last edited by firefly on Sat Apr 05, 2008 6:06 pm, edited 1 time in total.
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
Top
3PO
Veteran
Veteran
User avatar
Posts: 1110
Joined: Sun Nov 26, 2006 11:38 am
Location: Schwabenländle

  • Quote

Post by 3PO » Sat Apr 05, 2008 6:05 pm

Was ist ein "regulärer Ausdruck"? :?:
Top
firefly
Watchman
Watchman
Posts: 5385
Joined: Thu Oct 31, 2002 8:24 pm

  • Quote

Post by firefly » Sat Apr 05, 2008 6:10 pm

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: Select all

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:
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.
Top
sirro
Veteran
Veteran
User avatar
Posts: 1472
Joined: Sun Jul 20, 2003 6:15 pm
Location: aachen.nrw.de.eu

  • Quote

Post by sirro » Sat Apr 05, 2008 6:21 pm

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.
Top
firefly
Watchman
Watchman
Posts: 5385
Joined: Thu Oct 31, 2002 8:24 pm

  • Quote

Post by firefly » Sat Apr 05, 2008 6:36 pm

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.
Top
3PO
Veteran
Veteran
User avatar
Posts: 1110
Joined: Sun Nov 26, 2006 11:38 am
Location: Schwabenländle

  • Quote

Post by 3PO » Sat Apr 05, 2008 6:54 pm

Lösung gefunden.

so gehts: :wink:

Code: Select all

sed -e "s/;[0-9A-F]* [0-9A-F]* /; /" -e "s/;[0-9A-F]* /; /"
Danke nochmals für die Tipps. :wink:
Top
firefly
Watchman
Watchman
Posts: 5385
Joined: Thu Oct 31, 2002 8:24 pm

  • Quote

Post by firefly » Sat Apr 05, 2008 7:03 pm

3PO wrote:Lösung gefunden.

so gehts: :wink:

Code: Select all

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.
Top
3PO
Veteran
Veteran
User avatar
Posts: 1110
Joined: Sun Nov 26, 2006 11:38 am
Location: Schwabenländle

  • Quote

Post by 3PO » Sat Apr 05, 2008 7:34 pm

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: Select all

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.
Top
firefly
Watchman
Watchman
Posts: 5385
Joined: Thu Oct 31, 2002 8:24 pm

  • Quote

Post by firefly » Sat Apr 05, 2008 7:40 pm

der 2. Ausruck ist unnötig, da der Ausdruck
[0-9A-F]* [0-9A-F]*
auch deinen 2. Fall

Code: Select all

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.
Top
Post Reply
  • Print view

162 posts
  • Page 3 of 7
    • Jump to page:
  • Previous
  • 1
  • 2
  • 3
  • 4
  • 5
  • …
  • 7
  • Next

Return to “Diskussionsforum”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic