grep -i "^ (.). * \ 1 $" sowpods.txt> output.txt

430
Kappa123

Ich verwende eine Scrabble-Wörterliste, die ich mit dem Namen "sowpods.txt" heruntergeladen habe, und versuche, grep zu verwenden, um alle Wörter mit diesen Kriterien zu finden.

  • Wort mit 7 Buchstaben
  • Beginnt und endet mit demselben Buchstaben
  • Hat den gleichen zweiten, vierten und sechsten Buchstaben
  • Hat einen anderen 3. und 5. Buchstaben

Die Zeile, die ich bis jetzt habe, gibt mir einen Rückverweisfehler, also habe ich versucht, Online-Handbücher zu verwenden, aber sie waren wahnsinnig verwirrend. Ist das überhaupt möglich? Wenn ja könnte jemand bitte helfen? Vielen Dank!!!

Ich bin auch auf einem Mac und benutze das Standardterminal.

0
Ihre [vorherige Frage] (https://superuser.com/q/1356890/432690) hat gezeigt, dass Sie "grep -E" benötigen, um Klammern zu vermeiden. Dies sollte den Fehler der Rückreferenz beseitigen, Sie können jetzt fortfahren. Warum fragen Sie nach (teilweise) demselben Problem? Funktionieren die Lösungen für die andere Frage nicht auf Mac? Wenn dies nicht der Fall ist, ist es das Richtige, den Benutzern, die versucht haben, Ihnen dort zu helfen und zuerst die andere Frage zu beantworten, ein Feedback zu geben, anstatt dasselbe Problem zum zweiten Mal anzusprechen. Kamil Maciorowski vor 5 Jahren 1
Ah, ich habe nicht verstanden, dass das E das Problem war, ich habe nur die Zeile eingefügt, die sie mir gegeben hatten. Obwohl ich eigentlich nicht weiß, wohin ich von der Codezeile gehen muss, habe ich jetzt :(. Kappa123 vor 5 Jahren 0
OK dann. Wenn die andere Frage gelöst ist, akzeptieren Sie bitte eine der Antworten (nehmen Sie unsere [Tour] mit, um zu sehen, wie es funktioniert). Sie sollten auch die aktuelle Frage [bearbeiten], so dass der "Rückverweisungsfehler" nicht erwähnt wird, da Sie wissen, wie Sie damit umgehen müssen, und es ist nicht mehr das Problem (oder ein Teil des Problems). Konzentriere dich auf das, was das eigentliche Problem ist * jetzt *. Wenn der "Rückverweisfehler" Ihr einziges Problem war, sollte diese Frage gelöscht oder zumindest als Duplikat der anderen Frage geschlossen werden. Kamil Maciorowski vor 5 Jahren 1
Kann der zweite Buchstabe mit dem ersten übereinstimmen? Kann der dritte wie der zweite sein? ... Bitte [bearbeiten Sie Ihre Frage] (https://superuser.com/posts/1366807/edit) und fügen Sie Testfälle hinzu. Toto vor 5 Jahren 0

1 Antwort auf die Frage

1
Toto

Verwenden Sie die -POption (PCRE), falls auf Ihrem System verfügbar:

grep -P '^(?=[a-zA-Z]$)(.)(?!\1)(.)(?!\1)(?!\2)(.)\2(?!\1)(?!\2)(?!\3).\2\1$' inputfile 

Erläuterung:

^ (?=[a-zA-Z]$) : positive lookahead, zero-length assertion that make sure we have exactly 7 letters. You may use \pL if you want to deal with any laguage (.) : first letter, captured in group 1 (?!\1) : negative lookahead, zero-length assertion that make sure we don't have the same letter as in group 1 after (.) : second letter, captured in group 2 (?!\1) : negative lookahead, zero-length assertion that make sure we don't have the same letter as in group 1 after (?!\2) : negative lookahead, zero-length assertion that make sure we don't have the same letter as in group 2 after (.) : third letter, captured in group 3 \2 : fourth letter == second letter (?!\1) : negative lookahead, zero-length assertion that make sure we don't have the same letter as in group 1 after (?!\2) : negative lookahead, zero-length assertion that make sure we don't have the same letter as in group 2 after (?!\3) : negative lookahead, zero-length assertion that make sure we don't have the same letter as in group 3 after . : fifth letter \2 : sixth letter == second letter \1 : seventh letter == first letter $ 

DEMO