Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > ger.ct > #345654 > unrolled thread

Re: Kleine Linux Shell Frage

Started byAndreas Karrer <ak-8a@gmx.ch>
First post2018-03-28 10:18 +0000
Last post2018-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.


Contents

  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

#345654 — Re: Kleine Linux Shell Frage

FromAndreas Karrer <ak-8a@gmx.ch>
Date2018-03-28 10:18 +0000
SubjectRe: 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]


#345660

FromRuediger Lahl <ruediger.lahl@gmx.de>
Date2018-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]


#345672

Frommarc@invalid.invalid
Date2018-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]


#345696

FromGerald Gruner <gerald314@yahoo.de>
Date2018-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]


#345698

FromGerrit Heitsch <gerrit@laosinh.s.bawue.de>
Date2018-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]


#345704

FromGerald Gruner <gerald314@yahoo.de>
Date2018-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]


#345701

FromAndreas Karrer <ak-8a@gmx.ch>
Date2018-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]


#345693

FromHerwig AQSR <herwig.huener@t-online.de>
Date2018-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]


#345724

FromDietz Proepper <dietz-news@rotfl.franken.de>
Date2018-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]


#345727

From"Dr. Joachim Neudert" <neudert@5sl.org>
Date2018-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]


#345754

FromDietz Proepper <dietz-news@rotfl.franken.de>
Date2018-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