Skip to content

Instantly share code, notes, and snippets.

@paul-d-ray
Last active September 23, 2025 00:36
Show Gist options
  • Select an option

  • Save paul-d-ray/ae46046751a60fb0d0affc83367b1137 to your computer and use it in GitHub Desktop.

Select an option

Save paul-d-ray/ae46046751a60fb0d0affc83367b1137 to your computer and use it in GitHub Desktop.
Nushell Get Words with Suffix from a list

Purpose

I had a need to get words (four characters) that have a suffix from a list.

This was to help someone in the second grade with the words.

I used the unixdict.txt to get the words.

Nushell Code

  let suffixes = [ang ing ung unt ear ean eat ell end old unk]

open unixdict.txt
| lines
| where { |word| ($word | str length) == 4 }
| each { |word|
    let suffix = ($suffixes | find { |s| $word | str ends-with $s });
    if $suffix != null {
        { item: $word, suffix: $suffix }
    } else {
        null
    }
}
| compact
| group-by suffix --to-table
| where { |group| ($group.items | length) >= 5 }
| sort-by suffix item
| flatten
| flatten
| select item suffix
| group-by suffix --to-table
| select suffix items.item
| rename Suffix Word
  • Transpose the list Horizontal
let suffixes = [ang ing ung unt ear ean eat ell end old unk]

open unixdict.txt
| lines
| where { |word| ($word | str length) == 4 }
| each { |word|
    let suffix = ($suffixes | find { |s| $word | str ends-with $s });
    if $suffix != null {
        { item: $word, suffix: $suffix }
    } else {
        null
    }
}
| compact
| group-by suffix --to-table
| where { |group| ($group.items | length) >= 5 }
| sort-by suffix item
| flatten
| flatten
| select item suffix
| group-by suffix --to-table
| select suffix items.item
| rename Suffix Word
| transpose -r
  • Get all words that are four charactes and the suffix has at least five words
    • There were about 116 suffixes.
open unixdict.txt
  | lines
  | where { |word| ($word | str length) == 4 }
  | each { |word| { item: $word, base: ($word | str substring 1..3) } }
  | group-by base --to-table
  | where { |group| ($group.items | length) >= 5 }
  | sort-by base item
  | flatten | flatten | select item base
  | group-by base --to-table
  | select base items.item
  | rename Suffix Word

Output Vertical

╭────┬────────┬───────────────╮
│  # │ Suffix │     Word      │
├────┼────────┼───────────────┤
│  0 │ ang    │ ╭────┬──────╮ │
│    │        │ │  0 │ bang │ │
│    │        │ │  1 │ dang │ │
│    │        │ │  2 │ fang │ │
│    │        │ │  3 │ gang │ │
│    │        │ │  4 │ hang │ │
│    │        │ │  5 │ lang │ │
│    │        │ │  6 │ pang │ │
│    │        │ │  7 │ rang │ │
│    │        │ │  8 │ sang │ │
│    │        │ │  9 │ tang │ │
│    │        │ │ 10 │ wang │ │
│    │        │ │ 11 │ yang │ │
│    │        │ ╰────┴──────╯ │
│  1 │ ean    │ ╭───┬──────╮  │
│    │        │ │ 0 │ bean │  │
│    │        │ │ 1 │ dean │  │
│    │        │ │ 2 │ jean │  │
│    │        │ │ 3 │ lean │  │
│    │        │ │ 4 │ mean │  │
│    │        │ │ 5 │ sean │  │
│    │        │ │ 6 │ wean │  │
│    │        │ ╰───┴──────╯  │
│  2 │ ear    │ ╭────┬──────╮ │
│    │        │ │  0 │ bear │ │
│    │        │ │  1 │ dear │ │
│    │        │ │  2 │ fear │ │
│    │        │ │  3 │ gear │ │
│    │        │ │  4 │ hear │ │
│    │        │ │  5 │ lear │ │
│    │        │ │  6 │ near │ │
│    │        │ │  7 │ pear │ │
│    │        │ │  8 │ rear │ │
│    │        │ │  9 │ sear │ │
│    │        │ │ 10 │ tear │ │
│    │        │ │ 11 │ wear │ │
│    │        │ │ 12 │ year │ │
│    │        │ ╰────┴──────╯ │
│  3 │ eat    │ ╭───┬──────╮  │
│    │        │ │ 0 │ beat │  │
│    │        │ │ 1 │ feat │  │
│    │        │ │ 2 │ heat │  │
│    │        │ │ 3 │ meat │  │
│    │        │ │ 4 │ neat │  │
│    │        │ │ 5 │ peat │  │
│    │        │ │ 6 │ seat │  │
│    │        │ │ 7 │ teat │  │
│    │        │ ╰───┴──────╯  │
│  4 │ ell    │ ╭───┬──────╮  │
│    │        │ │ 0 │ bell │  │
│    │        │ │ 1 │ cell │  │
│    │        │ │ 2 │ dell │  │
│    │        │ │ 3 │ fell │  │
│    │        │ │ 4 │ hell │  │
│    │        │ │ 5 │ nell │  │
│    │        │ │ 6 │ sell │  │
│    │        │ │ 7 │ tell │  │
│    │        │ │ 8 │ well │  │
│    │        │ │ 9 │ yell │  │
│    │        │ ╰───┴──────╯  │
│  5 │ end    │ ╭───┬──────╮  │
│    │        │ │ 0 │ bend │  │
│    │        │ │ 1 │ fend │  │
│    │        │ │ 2 │ lend │  │
│    │        │ │ 3 │ mend │  │
│    │        │ │ 4 │ pend │  │
│    │        │ │ 5 │ rend │  │
│    │        │ │ 6 │ send │  │
│    │        │ │ 7 │ tend │  │
│    │        │ │ 8 │ vend │  │
│    │        │ ╰───┴──────╯  │
│  6 │ ing    │ ╭───┬──────╮  │
│    │        │ │ 0 │ bing │  │
│    │        │ │ 1 │ ding │  │
│    │        │ │ 2 │ king │  │
│    │        │ │ 3 │ ping │  │
│    │        │ │ 4 │ ring │  │
│    │        │ │ 5 │ sing │  │
│    │        │ │ 6 │ wing │  │
│    │        │ │ 7 │ zing │  │
│    │        │ ╰───┴──────╯  │
│  7 │ old    │ ╭───┬──────╮  │
│    │        │ │ 0 │ bold │  │
│    │        │ │ 1 │ cold │  │
│    │        │ │ 2 │ fold │  │
│    │        │ │ 3 │ gold │  │
│    │        │ │ 4 │ hold │  │
│    │        │ │ 5 │ mold │  │
│    │        │ │ 6 │ sold │  │
│    │        │ │ 7 │ told │  │
│    │        │ │ 8 │ wold │  │
│    │        │ ╰───┴──────╯  │
│  8 │ ung    │ ╭───┬──────╮  │
│    │        │ │ 0 │ dung │  │
│    │        │ │ 1 │ hung │  │
│    │        │ │ 2 │ lung │  │
│    │        │ │ 3 │ mung │  │
│    │        │ │ 4 │ rung │  │
│    │        │ │ 5 │ sung │  │
│    │        │ │ 6 │ tung │  │
│    │        │ ╰───┴──────╯  │
│  9 │ unk    │ ╭───┬──────╮  │
│    │        │ │ 0 │ bunk │  │
│    │        │ │ 1 │ dunk │  │
│    │        │ │ 2 │ funk │  │
│    │        │ │ 3 │ gunk │  │
│    │        │ │ 4 │ hunk │  │
│    │        │ │ 5 │ junk │  │
│    │        │ │ 6 │ punk │  │
│    │        │ │ 7 │ sunk │  │
│    │        │ ╰───┴──────╯  │
│ 10 │ unt    │ ╭───┬──────╮  │
│    │        │ │ 0 │ aunt │  │
│    │        │ │ 1 │ bunt │  │
│    │        │ │ 2 │ hunt │  │
│    │        │ │ 3 │ punt │  │
│    │        │ │ 4 │ runt │  │
│    │        │ ╰───┴──────╯  │
├────┼────────┼───────────────┤
│  # │ Suffix │     Word      │
╰────┴────────┴───────────────╯

Output Horizontal

╭─────┬─────────────────┬────────────────┬─────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────╮
│   # │       ang       │      ean       │       ear       │      eat       │      ell       │      end       │      ing       │      old       │      ung       │      unk       │      unt       │
├─────┼─────────────────┼────────────────┼─────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
│   0 │ ╭────┬──────╮   │ ╭───┬──────╮   │ ╭────┬──────╮   │ ╭───┬──────╮   │ ╭───┬──────╮   │ ╭───┬──────╮   │ ╭───┬──────╮   │ ╭───┬──────╮   │ ╭───┬──────╮   │ ╭───┬──────╮   │ ╭───┬──────╮   │
│     │ │  0 │ bang │   │ │ 0 │ bean │   │ │  0 │ bear │   │ │ 0 │ beat │   │ │ 0 │ bell │   │ │ 0 │ bend │   │ │ 0 │ bing │   │ │ 0 │ bold │   │ │ 0 │ dung │   │ │ 0 │ bunk │   │ │ 0 │ aunt │   │
│     │ │  1 │ dang │   │ │ 1 │ dean │   │ │  1 │ dear │   │ │ 1 │ feat │   │ │ 1 │ cell │   │ │ 1 │ fend │   │ │ 1 │ ding │   │ │ 1 │ cold │   │ │ 1 │ hung │   │ │ 1 │ dunk │   │ │ 1 │ bunt │   │
│     │ │  2 │ fang │   │ │ 2 │ jean │   │ │  2 │ fear │   │ │ 2 │ heat │   │ │ 2 │ dell │   │ │ 2 │ lend │   │ │ 2 │ king │   │ │ 2 │ fold │   │ │ 2 │ lung │   │ │ 2 │ funk │   │ │ 2 │ hunt │   │
│     │ │  3 │ gang │   │ │ 3 │ lean │   │ │  3 │ gear │   │ │ 3 │ meat │   │ │ 3 │ fell │   │ │ 3 │ mend │   │ │ 3 │ ping │   │ │ 3 │ gold │   │ │ 3 │ mung │   │ │ 3 │ gunk │   │ │ 3 │ punt │   │
│     │ │  4 │ hang │   │ │ 4 │ mean │   │ │  4 │ hear │   │ │ 4 │ neat │   │ │ 4 │ hell │   │ │ 4 │ pend │   │ │ 4 │ ring │   │ │ 4 │ hold │   │ │ 4 │ rung │   │ │ 4 │ hunk │   │ │ 4 │ runt │   │
│     │ │  5 │ lang │   │ │ 5 │ sean │   │ │  5 │ lear │   │ │ 5 │ peat │   │ │ 5 │ nell │   │ │ 5 │ rend │   │ │ 5 │ sing │   │ │ 5 │ mold │   │ │ 5 │ sung │   │ │ 5 │ junk │   │ ╰───┴──────╯   │
│     │ │  6 │ pang │   │ │ 6 │ wean │   │ │  6 │ near │   │ │ 6 │ seat │   │ │ 6 │ sell │   │ │ 6 │ send │   │ │ 6 │ wing │   │ │ 6 │ sold │   │ │ 6 │ tung │   │ │ 6 │ punk │   │                │
│     │ │  7 │ rang │   │ ╰───┴──────╯   │ │  7 │ pear │   │ │ 7 │ teat │   │ │ 7 │ tell │   │ │ 7 │ tend │   │ │ 7 │ zing │   │ │ 7 │ told │   │ ╰───┴──────╯   │ │ 7 │ sunk │   │                │
│     │ │  8 │ sang │   │                │ │  8 │ rear │   │ ╰───┴──────╯   │ │ 8 │ well │   │ │ 8 │ vend │   │ ╰───┴──────╯   │ │ 8 │ wold │   │                │ ╰───┴──────╯   │                │
│     │ │  9 │ tang │   │                │ │  9 │ sear │   │                │ │ 9 │ yell │   │ ╰───┴──────╯   │                │ ╰───┴──────╯   │                │                │                │
│     │ │ 10 │ wang │   │                │ │ 10 │ tear │   │                │ ╰───┴──────╯   │                │                │                │                │                │                │
│     │ │ 11 │ yang │   │                │ │ 11 │ wear │   │                │                │                │                │                │                │                │                │
│     │ ╰────┴──────╯   │                │ │ 12 │ year │   │                │                │                │                │                │                │                │                │
│     │                 │                │ ╰────┴──────╯   │                │                │                │                │                │                │                │                │
├─────┼─────────────────┼────────────────┼─────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
│   # │       ang       │      ean       │       ear       │      eat       │      ell       │      end       │      ing       │      old       │      ung       │      unk       │      unt       │
╰─────┴─────────────────┴────────────────┴─────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────╯
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment