Stap 3: Met behulp van grep.
$ grep "ed$" woorden
…
Alfred
Veramerikaniseerd
Verengelst
Appleseed
Brailled
Englished
Ethelred
Gevoed
Fred
Frenched
…
Dit genereert een vrij lange lijst. Dus wij willen zou om het pagineren van de output.
$ grep "ed$" woorden | minder
of we zouden willen om de lijst opslaan in een bestand dat we kunnen bewerken en inzage voor later gebruik.
$ grep "ed$" woorden > wordfile
Dat is leuk, nu laat doen brieven aan het begin van het bestand. Wij gebruiken de "^" om te laten zien dat we iets aan het begin van het woord willen ondertekenen.
$ grep ' ^ th "woorden
…
dank
Bedankt
dankbaar
thankfuller
thankfullest
Gelukkig
dankbaarheid
de dankbaarheid
…
U kunt de twee commando's combineren zodat kunt u een woord dat is het begin en het einde dat we willen. We willen gebruiken een "*" te zeggen alle letters tussendoor kan gaan. In dit geval dacht dat willen wij dat een van de letters "m" worden. We gebruiken "[]" te tonen welke mogelijke letter of letters wij tussendoor willen.
$ grep ' ^ zo * [m] * ed$ "woorden
Zed
in-of uitgezoomd
Daar kunt u de "[]" te zeggen dat ik wil graag alle woorden die met deze twee brieven beginnen.
$ grep ' ^ [xz] "
…
Xylem van
xylofoon
de xylofoon
xylofoons
xylophonist
xylophonists
z
zanied
Zanier
zanies
zaniest
…
grep ' ^ m.. t... s$ "woorden
mantels
mantels
martelaren
Masters
zaken
mentoren
misters
wanten
stervelingen
mortieren
mottoes
Mouthes
Mutters
mystici
Klap door de slag:
* ^-De karaat (shift-6) zegt "Dit is het begin van de regel". Zonder dat, zou het alle woorden als "fundamentals" vinden.
* $ - Het dollarteken is hetzelfde, alleen voor het einde van de regel. Zonder dat, zou je ook woorden als "matrassen".
* . -De periode betekent "elk teken hier". Een, en enige, karakter zal overeenkomen met hier.
Maar stel dat je te maken hebt met een spel naast een kruiswoordpuzzel, zoals Scrabble bijvoorbeeld, en u bent beperkt door meer beperkingen dan in een kruiswoordraadsel. U kunt 'haak' (Scrabble lingo voor ' toevoegen brieven aan het begin of einde van een woord te vormen meer woorden'). Dus, laten we eens kijken hoeveel woorden eindigen in "zijn".
ß grep "$zijn" woorden | WC -l
43
Nou, zijn dat goede kansen. Maar we raken de rand van het bord met een aantal van hen (peeked). Dus moeten we woorden die zeven brieven of minder die eindigen in "zijn". "^... zijn$" zou krijgen alle zeven letter woorden, maar niet de kortere audiobestanden splitsen. De oplossing wordt ditmaal nogal cryptisch:
ß grep ' ^ .\{1,4\}are$ "woorden
Vliegtickets
bewust
kale
Pas op
geschetter
Zorg
Vergelijk
Dare
verklaren
verstrikken
Fanfare
tarief
Flare
Glare
Haas
Mare
Pare
bereiden
zeldzame
schrikken
Delen
snare
reserve
plein
Stare
niet op de hoogte
ware
oorlogvoering
welzijn
.. .maar we heb ontmoet de caret dollarteken en de periode vóór, dus echt het nieuwe deel is de \{1,4\}. Dit zegt "match als als een paar, en maar liefst vier, herhalingen van de vorige tekens". De activator voor de nummerreeks is de accolades en de tekens die worden voorafgegaan door slashes (weet iemand waarom, klasse?). En aangezien het vorige teken een periode die overeenkomt met een willekeurige letter is, hebben we alle korter dan acht letters welk uiteinde in "zijn" woorden gevonden.
Dit is allemaal goed en wel, maar we hebben alleen zo veel brieven aan het werken met in Scrabble in één keer. Zeggen dat onze huidige rack de letters "C F T W A B M heeft". Kunnen we het beperken tot alleen de woorden die gebruik maken van die brieven?
ß grep ' ^ [cftwabm] \ {1, 4\} $zijn "woorden
bewust
kale
Zorg
tarief
Mare
ware
Ah, nu krijgen we ergens! De haakjes [] geven de geldige tekens. Een andere manier om ze te gebruiken is om uit te drukken een bereik (bijv. [0-9]), maar dat is nauwelijks de gebruikelijke geval in woordspelletjes.
De enige beperking is de verbeelding. Als je bent het spelen van scrabble, laat uw partners weten wat u doen om te voorkomen dat een gekwetste gevoelens. Ik gebruik deze zelfde idee voor kruiswoordraadsels ook.