Zeilen ohne doppelte Zeichen ausser nn|n filtern

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Zeilen ohne doppelte Zeichen ausser nn|n filtern

Beitrag von inne » 30.07.2018 17:00:24

Hallo,

wie filtert man Zeilen ohne doppelte Zeichen, außer 'n' darf doppelt vorkommen, mit grep?

Benutzeravatar
heisenberg
Beiträge: 3473
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Zeilen ohne doppelte Zeichen ausser nn|n filtern

Beitrag von heisenberg » 30.07.2018 17:18:26

hier mit sed:

Code: Alles auswählen

sed -r -e '/[n]{2,}/Ip' -e '/([a-z])\1/Id'  <input.txt
Das erste Kommando gibt multiple n-Zeilen aus. Das zweite löscht alle Buchstabenwiederholungen(also auch nn, aber das ist ja bereits ausgegeben.)
... unterhält sich hier gelegentlich mangels wunschgemäßer Gesprächspartner mal mit sich selbst.

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Zeilen ohne doppelte Zeichen ausser nn|n filtern

Beitrag von inne » 30.07.2018 17:40:02

Das kommt nicht hin, bzw. so meine ich das nicht.

Es sollen zB. auch Zeilen wie "ann a" ausgefiltert werden.

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Zeilen ohne doppelte Zeichen ausser nn|n filtern

Beitrag von Meillo » 30.07.2018 17:48:52

So?

Code: Alles auswählen

grep -v '\([^n]\).*\1'

Btw: Am einfachsten ist es, wenn du eine Beispiel-Eingabe und eine Beispiel-Ausgabe lieferst, dann kann man sein Script naemlich super easy testen.
Use ed once in a while!

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Zeilen ohne doppelte Zeichen ausser nn|n filtern

Beitrag von inne » 30.07.2018 17:55:25

Meillo hat geschrieben: ↑ zum Beitrag ↑
30.07.2018 17:48:52
So?

Code: Alles auswählen

grep -v '\([^n]\).*\1'
Die Ausgabe schaut richtig aus. Für meinen konkreten Fall passt das - Danke!
Btw: Am einfachsten ist es, wenn du eine Beispiel-Eingabe und eine Beispiel-Ausgabe lieferst, dann kann man sein Script naemlich super easy testen.
Ich werds mir zu Herzen nehmen.

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Zeilen ohne doppelte Zeichen ausser nn|n filtern

Beitrag von inne » 30.07.2018 17:59:05

Wobei ich zurückrudern muss.

Habe noch Zeilen wie "annn a" in der Ausgabe, also beliebig vielen n in Reihe. Diesen Fall hatte ich gar nicht auf dem Schirm.

Da muss ich aber noch überlegen, ob ich den behalten oder weg haben möchte^^
//Darf nicht sein, bzw, nicht wenn nicht auch das komplette Charset enthalten ist.

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Zeilen ohne doppelte Zeichen ausser nn|n filtern

Beitrag von Meillo » 30.07.2018 18:07:23

inne hat geschrieben: ↑ zum Beitrag ↑
30.07.2018 17:59:05
Habe noch Zeilen wie "annn a" in der Ausgabe, also beliebig vielen n in Reihe. Diesen Fall hatte ich gar nicht auf dem Schirm.

Da muss ich aber noch überlegen, ob ich den behalten oder weg haben möchte^^
Ich sehe schon: Es liegt nicht an der Umsetzung, sondern an den fachlichen Anforderungen ... kommt mir irgendwie bekannt vor. ;-)

Als Informatiker muss man ja nicht bloss programmieren, sondern auch noch der Fachseite helfen, herauszufinden, was sie eigentlich brauchen. :facepalm: Zurecht sollen sie uns dafuer dann doppelte Gehaelter bezahlen! :THX:
Use ed once in a while!

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Zeilen ohne doppelte Zeichen ausser nn|n filtern

Beitrag von inne » 30.07.2018 18:32:11

Der Name "Anne Luk" ist ein gutes Beispiel.

Ich wollte alle (für mich) Sinnvollen Buchstaben-Kombinationen davon haben. Was aber nur eine kleine Spielerei für den Moment ist.

Heute brauchte ich einen Namen der eben auf "Anne Fin" "aufbaut". Habe da auch schon einen - aber mir gehen für die Zukunft die Ideen aus ;-)

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Zeilen ohne doppelte Zeichen ausser nn|n filtern

Beitrag von Meillo » 30.07.2018 21:34:34

inne hat geschrieben: ↑ zum Beitrag ↑
30.07.2018 18:32:11
Der Name "Anne Luk" ist ein gutes Beispiel.

Ich wollte alle (für mich) Sinnvollen Buchstaben-Kombinationen davon haben. Was aber nur eine kleine Spielerei für den Moment ist.
Ich versteh's leider noch nicht ganz. Suchst du Anagramme? Oder was meinst du mit Buchstaben-Kombinationen?

Wie haengt das aber mit den doppelten Buchstaben zusammen, die rausgefiltert werden sollen? ... ausser `n' ... Scheint irgendwie besonders zu sein, dieses `n'. Vielleicht ist es ja das `n' von niemand ... ;-)
Use ed once in a while!

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Zeilen ohne doppelte Zeichen ausser nn|n filtern

Beitrag von inne » 30.07.2018 21:42:44

Danke!

Stimmt Anagrammieren ist das richtige (Das Anagram muss ja keinen Sinn/Bedeutung haben) - Aber wie gesagt war nur eine Spielerei.

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Zeilen ohne doppelte Zeichen ausser nn|n filtern

Beitrag von Meillo » 31.07.2018 06:50:31

inne hat geschrieben: ↑ zum Beitrag ↑
30.07.2018 21:42:44
Stimmt Anagrammieren ist das richtige (Das Anagram muss ja keinen Sinn/Bedeutung haben) - Aber wie gesagt war nur eine Spielerei.
Okay, also hast du ein Programm, das dir von einem Ausgangswort Anagramme erstellt. Hast du das schon fertig? (Da gibt's natuerlich auch Pakete in Debian, aber du scheinst selber daran rumprogrammieren zu wollen.)

Von dem bekommst du eine Liste an Anagrammen. Die willst du anschliessend filtern um nur noch die rauszuholen, die bestimmten Kriterien entsprechen, vermute ich.

Was ich aber dann nicht verstehe, ist deine Ursprungsfrage mit den doppelten Zeichen, weil sich in einem Anagram die Menge der Zeichen nicht aendert; es ist nur eine Umordnung der genau gleichen Zeichen. Da musst du also noch mehr erklaeren.
Use ed once in a while!

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Zeilen ohne doppelte Zeichen ausser nn|n filtern

Beitrag von inne » 31.07.2018 18:06:00

Meillo hat geschrieben: ↑ zum Beitrag ↑
31.07.2018 06:50:31

Okay, also hast du ein Programm, das dir von einem Ausgangswort Anagramme erstellt. Hast du das schon fertig? (Da gibt's natuerlich auch Pakete in Debian, aber du scheinst selber daran rumprogrammieren zu wollen.)
Ich erinnere mich jetzt, nachdem du den Begriff Anagramm richtigerweise genannt hast, an die Lustifikation. Dort hatte ich mal C-Programm um Anagramme für eine Aufgabe zu erstellen. Das Programm und Quelltext habe bzw. finde ich jedoch nicht mehr. :-(
Meillo hat geschrieben: ↑ zum Beitrag ↑
31.07.2018 06:50:31
Von dem bekommst du eine Liste an Anagrammen. Die willst du anschliessend filtern um nur noch die rauszuholen, die bestimmten Kriterien entsprechen, vermute ich.
Was ich stattdessen aber genommen habe, ist das rtgen.pl Perl-Skript vom Scripting kostest: viewtopic.php?f=34&t=156724&start=135#en.pl viewtopic.php?f=34&t=156724&start=135#
bzw. habe ich einen etwas überarbeitete Version auf Github: https://github.com/1nn3/up/blob/master/bin/rtgen.pl

Gegeben ist ich also eine Liste alle möglichen Kombinationen der Zeichen aus "Anne Luk" mit einer Länge von 8 Zeichen:
rtget --charset "aneluk " --length 8 --min-length 8
Meillo hat geschrieben: ↑ zum Beitrag ↑
31.07.2018 06:50:31
Was ich aber dann nicht verstehe, ist deine Ursprungsfrage mit den doppelten Zeichen, weil sich in einem Anagram die Menge der Zeichen nicht aendert; es ist nur eine Umordnung der genau gleichen Zeichen. Da musst du also noch mehr erklaeren.
Aus der Liste mit eben allen diesen Möglichkeiten, wollte ich nun alle Anagramme herausfiltern. (Das sollte vom Sachverhalt her ja stimmen)

PS: Ist das zu verstehen :-)

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Zeilen ohne doppelte Zeichen ausser nn|n filtern

Beitrag von Meillo » 31.07.2018 21:00:32

Du hast also alle Worte der Laenge acht aus den Zeichen des Alphabets "aneluk ". Du willst alle Anagramme von ``Anne Luk'' davon abziehen. Dann wuerde ich dir vorschlagen, mit einem Anagramm-Generator (z.B. Debianan) alle Anagramme von ``Anne Luk'' zu generieren und mittels comm(1) die zweite von der ersten Liste abzuziehen. (Dazu beide Liste zuerst sortieren ... oder `fgrep -xvf anagrams words' verwenden.)
Use ed once in a while!

Antworten