Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > ger.ct > #345654 > unrolled thread
| Started by | Andreas Karrer <ak-8a@gmx.ch> |
|---|---|
| First post | 2018-03-28 10:18 +0000 |
| Last post | 2018-03-29 13:30 +0200 |
| Articles | 11 — 8 participants |
Back to article view | Back to ger.ct
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: Kleine Linux Shell Frage Andreas Karrer <ak-8a@gmx.ch> - 2018-03-28 10:18 +0000
Re: Kleine Linux Shell Frage Ruediger Lahl <ruediger.lahl@gmx.de> - 2018-03-28 13:08 +0200
Re: Kleine Linux Shell Frage marc@invalid.invalid - 2018-03-28 14:16 +0200
Re: Kleine Linux Shell Frage Gerald Gruner <gerald314@yahoo.de> - 2018-03-28 20:46 +0200
Re: Kleine Linux Shell Frage Gerrit Heitsch <gerrit@laosinh.s.bawue.de> - 2018-03-28 20:55 +0200
Re: Kleine Linux Shell Frage Gerald Gruner <gerald314@yahoo.de> - 2018-03-28 22:36 +0200
Re: Kleine Linux Shell Frage Andreas Karrer <ak-8a@gmx.ch> - 2018-03-28 19:56 +0000
Re: Kleine Linux Shell Frage Herwig AQSR <herwig.huener@t-online.de> - 2018-03-28 11:35 -0700
Re: Kleine Linux Shell Frage Dietz Proepper <dietz-news@rotfl.franken.de> - 2018-03-29 09:05 +0200
Re: Kleine Linux Shell Frage "Dr. Joachim Neudert" <neudert@5sl.org> - 2018-03-29 09:36 +0200
Re: Kleine Linux Shell Frage Dietz Proepper <dietz-news@rotfl.franken.de> - 2018-03-29 13:30 +0200
| From | Andreas Karrer <ak-8a@gmx.ch> |
|---|---|
| Date | 2018-03-28 10:18 +0000 |
| Subject | Re: Kleine Linux Shell Frage |
| Message-ID | <slrnpbmqvg.3ro3.ak-8a@chimborazo.ee.ethz.ch> |
* Jörg Barres <news@traicon.net>: > Wer weiß eine Lösung? ls -al | grep '^d' Das "re" in grep steht für "Regular Expression"; darüber kann man ganze Bücher schreiben¹. Das Metazeichen "^" bedeutet, dass das danach Folgende Anfang der Zeile stehen muss. Wer mehr wissen will -- Einführungen und Tutorials zu regulären Ausdrücken gibt es im Netz zuhauf. - Andi ¹ Und übersetzen, https://www.oreilly.de/common/images/cover_masterid/gross/120245.jpg
[toc] | [next] | [standalone]
| From | Ruediger Lahl <ruediger.lahl@gmx.de> |
|---|---|
| Date | 2018-03-28 13:08 +0200 |
| Message-ID | <p9g455.4fk.1@privat.lahls.de> |
| In reply to | #345654 |
On 28.03.2018 12:18, Andreas Karrer wrote: > * Jörg Barres <news@traicon.net>: >> Wer weiß eine Lösung? > > ls -al | grep '^d' > > Das "re" in grep steht für "Regular Expression"; darüber kann man > ganze Bücher schreiben¹. > ¹ Und übersetzen, > https://www.oreilly.de/common/images/cover_masterid/gross/120245.jpg Na, du musst es ja wissen :-) -- bis denne
[toc] | [prev] | [next] | [standalone]
| From | marc@invalid.invalid |
|---|---|
| Date | 2018-03-28 14:16 +0200 |
| Message-ID | <pmdsoe-k6e.ln1@pascal.gerges.lu> |
| In reply to | #345654 |
Andreas Karrer <ak-8a@gmx.ch> wrote: > * Jörg Barres <news@traicon.net>: > >> Wer weiß eine Lösung? > > ls -al | grep '^d' > > Das "re" in grep steht für "Regular Expression"; darüber kann man > ganze Bücher schreiben¹. Das Metazeichen "^" bedeutet, dass das > danach Folgende Anfang der Zeile stehen muss. Das listet alle directories, macht also das Gegenteil. Wollte man die directories filtern, wuerde man ls -al | grep '^[^d]' nutzen (matche alles, was zu Anfang kein 'd' hat) ls -al ist ein sehr doofer Befehl, um danach Namen herauszufischen. Auch wenn's keinen User namens dagobert gibt, geht ' d' nicht. Das File koennte ja 'test datei' heissen. cu .\\arc
[toc] | [prev] | [next] | [standalone]
| From | Gerald Gruner <gerald314@yahoo.de> |
|---|---|
| Date | 2018-03-28 20:46 +0200 |
| Message-ID | <1rl4o88gzdzek$.dlg@10235314.user.individual.de> |
| In reply to | #345672 |
marc@invalid.invalid schrieb am 28.03.18: > Andreas Karrer <ak-8a@gmx.ch> wrote: >> * Jörg Barres <news@traicon.net>: >> >>> Wer weiß eine Lösung? >> >> ls -al | grep '^d' >> >> Das "re" in grep steht für "Regular Expression"; darüber kann man >> ganze Bücher schreiben¹. Das Metazeichen "^" bedeutet, dass das >> danach Folgende Anfang der Zeile stehen muss. > > Das listet alle directories, macht also das Gegenteil. Wollte man die > directories filtern, wuerde man > > ls -al | grep '^[^d]' > > nutzen (matche alles, was zu Anfang kein 'd' hat) > > ls -al ist ein sehr doofer Befehl, um danach Namen herauszufischen. Auch > wenn's keinen User namens dagobert gibt, geht ' d' nicht. Das File > koennte ja 'test datei' heissen. Ja, doofer Befehl. Es gibt dort Felder mit fester Breite und mit variabler Breite und Leerzeichen als Trennzeichen. Daran kann man sich entlang hangeln, wenn man die Syntax von ls kennt. Ansonsten stolpert man über den ersten nicht bedachten Sonderfall. Die Aufgabe wird wohl eher sein, eine passende Regex aufzubauen. Ganz am Ende steht dann der Dateiname, der mit "d" beginnen soll. MfG Gerald -- No trees were killed in the sending of this message. However a large number of electrons were terribly inconvenienced.
[toc] | [prev] | [next] | [standalone]
| From | Gerrit Heitsch <gerrit@laosinh.s.bawue.de> |
|---|---|
| Date | 2018-03-28 20:55 +0200 |
| Message-ID | <p9goeu$eck$1@news.bawue.net> |
| In reply to | #345696 |
On 03/28/2018 08:46 PM, Gerald Gruner wrote:
> marc@invalid.invalid schrieb am 28.03.18:
>
>> Andreas Karrer <ak-8a@gmx.ch> wrote:
>>> * Jörg Barres <news@traicon.net>:
>>>
>>>> Wer weiß eine Lösung?
>>>
>>> ls -al | grep '^d'
>>>
>>> Das "re" in grep steht für "Regular Expression"; darüber kann man
>>> ganze Bücher schreiben¹. Das Metazeichen "^" bedeutet, dass das
>>> danach Folgende Anfang der Zeile stehen muss.
>>
>> Das listet alle directories, macht also das Gegenteil. Wollte man die
>> directories filtern, wuerde man
>>
>> ls -al | grep '^[^d]'
>>
>> nutzen (matche alles, was zu Anfang kein 'd' hat)
>>
>> ls -al ist ein sehr doofer Befehl, um danach Namen herauszufischen. Auch
>> wenn's keinen User namens dagobert gibt, geht ' d' nicht. Das File
>> koennte ja 'test datei' heissen.
>
> Ja, doofer Befehl. Es gibt dort Felder mit fester Breite und mit variabler
> Breite und Leerzeichen als Trennzeichen. Daran kann man sich entlang
> hangeln, wenn man die Syntax von ls kennt. Ansonsten stolpert man über den
> ersten nicht bedachten Sonderfall.
> Die Aufgabe wird wohl eher sein, eine passende Regex aufzubauen. Ganz am
> Ende steht dann der Dateiname, der mit "d" beginnen soll.
Die Regex wird, wenn sie hinter ls steht, aber von der Shell expandiert
und nicht von ls.
Solche Aufgabenstellungen sind ziemlich daneben, wenn ich sowas will,
dann nehme ich eben nicht 'ls -la' oder beschränke mich auf 'grep'. Wozu
gibts denn 'awk' und diverse andere Helferlein?
for i in `ls -la | awk '{print $9}'| grep "^d"`; do ls -lad $i; done
for i in `ls | grep "^d"` ; do ls -lad $i; done
Gerrit
[toc] | [prev] | [next] | [standalone]
| From | Gerald Gruner <gerald314@yahoo.de> |
|---|---|
| Date | 2018-03-28 22:36 +0200 |
| Message-ID | <t24i4siw8gof$.dlg@10235314.user.individual.de> |
| In reply to | #345696 |
Ich selbst schrieb am 28.03.18:
> Die Aufgabe wird wohl eher sein, eine passende Regex aufzubauen. Ganz am
> Ende steht dann der Dateiname, der mit "d" beginnen soll.
Ohne alle Sonderfälle von ls zu kennen, wäre mein Ansatz, dass die Ausgabe
anscheinend aus durch Leerzeichen getrennten Zeichenblöcken besteht und der
Dateiname (bei meinen Einstellungen) anscheinend am neunten beginnt.
-rwxrwxr-x 1 user user 223 Aug 13 2017 dialog.exe.desktop
Also wäre mein Regex, ein Minus am Zeilenanfang zu suchen (=File), dann 8
Blöcke zu überspringen und dann ein "d" zu suchen:
ls -al | grep -E -e "^-(\S+ +){8}d"
MfG
Gerald
--
No trees were killed in the sending of this message. However
a large number of electrons were terribly inconvenienced.
[toc] | [prev] | [next] | [standalone]
| From | Andreas Karrer <ak-8a@gmx.ch> |
|---|---|
| Date | 2018-03-28 19:56 +0000 |
| Message-ID | <slrnpbnss4.43vo.ak-8a@chimborazo.ee.ethz.ch> |
| In reply to | #345672 |
* marc@invalid.invalid <marc@invalid.invalid>:
> Andreas Karrer <ak-8a@gmx.ch> wrote:
>> * Jörg Barres <news@traicon.net>:
>>
>>> Wer weiß eine Lösung?
>>
>> ls -al | grep '^d'
>>
> Das listet alle directories, macht also das Gegenteil. Wollte man die
> directories filtern, wuerde man
>
> ls -al | grep '^[^d]'
>
> nutzen (matche alles, was zu Anfang kein 'd' hat)
Huch, ich hatte das Originalposting nur sehr diagonal gelesen
und mir eine komplett falsche Aufgabenstellung dazufantasiert.
> ls -al ist ein sehr doofer Befehl, um danach Namen herauszufischen. Auch
> wenn's keinen User namens dagobert gibt, geht ' d' nicht. Das File
> koennte ja 'test datei' heissen.
In der Tat. Der Output von ls -al ist für den allgemeinen Fall
wirklich sehr schwierig zu parsen und unterscheidet sich je nach
Provenienz des ls. Bei GNU ls ist Breite der Spalten user, group, size
nicht konstant, sondern von der maximalen Breite der Einträge
abhängig. Die Monatsnamen haben vielleicht in allen Locales 3
Buchstaben, aber sicher ist das nicht.
Aber bei GNU ls ist es mindestens bei normalen Dateien (Typ "-") so,
dass der Output immer 8 durch Leerzeichen getrennte Spalten aufweist,
gefolgt vom Filenamen. Das kann man so matchen:
ls -al | egrep '^-([^ ]+[ ]+){8}d'
^ Zeilenanfang
- das Zeichen "-", also nur plain files
[^ ]+ eine Folge von 1 oder mehr Nicht-Leerzeichen
[ ]+ eine Folge von 1 oder mehr Leerzeichen
( ) Gruppierung, eine Gruppe hat also zuerst 1..n
Nicht-Leerzeichen, dann 1..m Leerzeichen
{8} Die Gruppierung muss genau 8x in Folge vorkommen,
nämlich 1:Permissions, 2:Linkcount, 3:Owner,
4:Group, 5:Size, 6:Monat, 7:Tag, 8:yyyy oder hh:mm.
d Das d, mit dem der Dateiname beginnen soll
Das nimmt an, dass Owner, Group und Monatsnamen keine Leerzeichen
enthalten. Beim Gruppenname wären Leerzeichen an sich möglich, das
wäre aber sehr unüblich.
Wenn man unbedingt GNU grep statt GNU egrep nehmen will, muss man (){}+
escapen:
ls -al | grep '^-\([^ ]\+[ ]\+\)\{8\}d'
- Andi
[toc] | [prev] | [next] | [standalone]
| From | Herwig AQSR <herwig.huener@t-online.de> |
|---|---|
| Date | 2018-03-28 11:35 -0700 |
| Message-ID | <ad9d6523-680d-4f28-91b7-e4cb25b0690e@googlegroups.com> |
| In reply to | #345654 |
2018-03-28 20:36:00 +0200 > ... > Wer mehr wissen will -- Einführungen und Tutorials zu regulären > Ausdrücken gibt es im Netz zuhauf. Ärgerlich ist, dass die verschiedenen Instanzen, die reguläre AusDrücke verstehen, oft in Nuancen etwas unterschiedliches darunter verstehen. Herwig
[toc] | [prev] | [next] | [standalone]
| From | Dietz Proepper <dietz-news@rotfl.franken.de> |
|---|---|
| Date | 2018-03-29 09:05 +0200 |
| Message-ID | <1800261.PIDvDuAF1L@rotfl.franken.de> |
| In reply to | #345693 |
Herwig AQSR wrote: > 2018-03-28 20:36:00 +0200 > >> ... > >> Wer mehr wissen will -- Einführungen und Tutorials zu regulären >> Ausdrücken gibt es im Netz zuhauf. > > Ärgerlich ist, dass die verschiedenen Instanzen, die reguläre > AusDrücke verstehen, oft in Nuancen etwas unterschiedliches > darunter verstehen. Oh, NIH in Reinkultur. Auf die Schnelle komme ich auf mindestens vier verbreitetere RE-Dialekte. Life sucks. And then you die.
[toc] | [prev] | [next] | [standalone]
| From | "Dr. Joachim Neudert" <neudert@5sl.org> |
|---|---|
| Date | 2018-03-29 09:36 +0200 |
| Message-ID | <p9i52m$uvf$1@news.albasani.net> |
| In reply to | #345724 |
Am 29.03.18 um 09:05 schrieb Dietz Proepper: > Oh, NIH in Reinkultur. Auf die Schnelle komme ich auf mindestens vier > verbreitetere RE-Dialekte. > > Life sucks. And then you die. > Es ist sogar noch schlimmer: "Life is unfair. Then you die." In dieser Kurzzusammenfassung steckt das Elend von Millionen... :-(
[toc] | [prev] | [next] | [standalone]
| From | Dietz Proepper <dietz-news@rotfl.franken.de> |
|---|---|
| Date | 2018-03-29 13:30 +0200 |
| Message-ID | <1976137.1BCLMh4Saa@rotfl.franken.de> |
| In reply to | #345727 |
Dr. Joachim Neudert wrote: > Am 29.03.18 um 09:05 schrieb Dietz Proepper: > >> Oh, NIH in Reinkultur. Auf die Schnelle komme ich auf mindestens vier >> verbreitetere RE-Dialekte. >> >> Life sucks. And then you die. > > Es ist sogar noch schlimmer: "Life is unfair. Then you die." man sucks. > In dieser Kurzzusammenfassung steckt das Elend von Millionen... :-( Das Universum ist ein Rattenloch.
[toc] | [prev] | [standalone]
Back to top | Article view | ger.ct
csiph-web