If you have spent any time with IPv6 addresses, you may have realized that there are many different words that you can spell within an IPv6 address. So, let’s take a look at all the different IPv6 words we can spell!

First, we need to define what numbers are equal to what letters, and then we can walk through how I created a list of IPv6 words.

Since IPv6 addresses are comprised of hexadecimal numbers, we already have the letters A, B, C, D, E, and F to work with in our sentences. Next are the numbers that can represent letters…

The letters:

Number Letter
1 I or L
2 Z
5 S
7 T
9 G

So, combining all of this, we have the letters A, B, C, D, E, F, G, I, L, O, S, T, and Z.

Next, we need a dictionary that we can pull our words from. I decided to use the SCOWL Word List, because it will easily generate a list from the command line which we can then use in our scripts to create a list of words. There are probably better dictionaries to start with, that will produce better results (some of our words will be somewhat silly, like aas, but I’m a dogg and that’s how I roll).

After download and extracting the word list from above, we are going to make an American word list. Now, there are many different options for the SCOWL software, depending on how many words you want included in your list, language, etc. See the SCOWL readme for more details and options…

$ ./mk-list american 80 > ipv6words80-1.txt

This will create our base IPv6 word list. The 80 indicates the size of the dictionary, which should contain over 338,000 words. It is probably way to big, with many words we will never use, but that is where we’re going to start anyways!

Next, we are going to pull out all of the words that contain letters from our specified list above, and write them into a second file. Using the grep command we will search for any letters we don’t want, ignore the case, invert our match, and write!

$ grep -iv 'h\|j\|k\|m\|n\|p\|q\|r\|u\|v\|w\|x\|y' ipv6words80-1.txt > ipv6words80-2.txt

Now, we have a list of words that only contain the letters from our list above! However, before we can do anything else, we need to remove any non-standard characters in the words (like apostrophes), and change any umlaut vowels to regular english vowels. This time we will use the string editor sed along with perl to accomplish our task.

$ sed -i s/\'//g ipv6words80-2.txt

$ perl -pi -e 's/\xC0/A/g' ipv6words80-2.txt
$ perl -pi -e 's/\xC1/A/g' ipv6words80-2.txt
$ perl -pi -e 's/\xC2/A/g' ipv6words80-2.txt
$ perl -pi -e 's/\xC3/A/g' ipv6words80-2.txt
$ perl -pi -e 's/\xC4/A/g' ipv6words80-2.txt
$ perl -pi -e 's/\xC5/A/g' ipv6words80-2.txt
$ perl -pi -e 's/\xC6/AE/g' ipv6words80-2.txt
$ perl -pi -e 's/\xC7/C/g' ipv6words80-2.txt
$ perl -pi -e 's/\xC8/E/g' ipv6words80-2.txt
$ perl -pi -e 's/\xC9/E/g' ipv6words80-2.txt
$ perl -pi -e 's/\xCA/E/g' ipv6words80-2.txt
$ perl -pi -e 's/\xCB/E/g' ipv6words80-2.txt
$ perl -pi -e 's/\xCC/I/g' ipv6words80-2.txt
$ perl -pi -e 's/\xCD/I/g' ipv6words80-2.txt
$ perl -pi -e 's/\xCE/I/g' ipv6words80-2.txt
$ perl -pi -e 's/\xCF/I/g' ipv6words80-2.txt
$ perl -pi -e 's/\xD0/D/g' ipv6words80-2.txt
$ perl -pi -e 's/\xD1/N/g' ipv6words80-2.txt
$ perl -pi -e 's/\xD2/O/g' ipv6words80-2.txt
$ perl -pi -e 's/\xD3/O/g' ipv6words80-2.txt
$ perl -pi -e 's/\xD4/O/g' ipv6words80-2.txt
$ perl -pi -e 's/\xD5/O/g' ipv6words80-2.txt
$ perl -pi -e 's/\xD6/O/g' ipv6words80-2.txt
$ perl -pi -e 's/\xD8/O/g' ipv6words80-2.txt
$ perl -pi -e 's/\xD9/U/g' ipv6words80-2.txt
$ perl -pi -e 's/\xDA/U/g' ipv6words80-2.txt
$ perl -pi -e 's/\xDB/U/g' ipv6words80-2.txt
$ perl -pi -e 's/\xDC/U/g' ipv6words80-2.txt
$ perl -pi -e 's/\xDD/Y/g' ipv6words80-2.txt
$ perl -pi -e 's/\xDF/B/g' ipv6words80-2.txt
$ perl -pi -e 's/\xE0/a/g' ipv6words80-2.txt
$ perl -pi -e 's/\xE1/a/g' ipv6words80-2.txt
$ perl -pi -e 's/\xE2/a/g' ipv6words80-2.txt
$ perl -pi -e 's/\xE3/a/g' ipv6words80-2.txt
$ perl -pi -e 's/\xE4/a/g' ipv6words80-2.txt
$ perl -pi -e 's/\xE5/a/g' ipv6words80-2.txt
$ perl -pi -e 's/\xE6/ae/g' ipv6words80-2.txt
$ perl -pi -e 's/\xE7/c/g' ipv6words80-2.txt
$ perl -pi -e 's/\xE8/e/g' ipv6words80-2.txt
$ perl -pi -e 's/\xE9/e/g' ipv6words80-2.txt
$ perl -pi -e 's/\xEA/e/g' ipv6words80-2.txt
$ perl -pi -e 's/\xEB/e/g' ipv6words80-2.txt
$ perl -pi -e 's/\xEC/i/g' ipv6words80-2.txt
$ perl -pi -e 's/\xED/i/g' ipv6words80-2.txt
$ perl -pi -e 's/\xEE/i/g' ipv6words80-2.txt
$ perl -pi -e 's/\xEF/i/g' ipv6words80-2.txt
$ perl -pi -e 's/\xF0/o/g' ipv6words80-2.txt
$ perl -pi -e 's/\xF1/n/g' ipv6words80-2.txt
$ perl -pi -e 's/\xF2/o/g' ipv6words80-2.txt
$ perl -pi -e 's/\xF3/o/g' ipv6words80-2.txt
$ perl -pi -e 's/\xF4/o/g' ipv6words80-2.txt
$ perl -pi -e 's/\xF5/o/g' ipv6words80-2.txt
$ perl -pi -e 's/\xF6/o/g' ipv6words80-2.txt
$ perl -pi -e 's/\xF8/o/g' ipv6words80-2.txt
$ perl -pi -e 's/\xF9/u/g' ipv6words80-2.txt
$ perl -pi -e 's/\xFA/u/g' ipv6words80-2.txt
$ perl -pi -e 's/\xFB/u/g' ipv6words80-2.txt
$ perl -pi -e 's/\xFC/u/g' ipv6words80-2.txt
$ perl -pi -e 's/\xFD/y/g' ipv6words80-2.txt
$ perl -pi -e 's/\xFF/y/g' ipv6words80-2.txt

Since we just changed a bunch of umlauts to letters, we are going to run the grep command again.

$ grep -iv 'h\|j\|k\|m\|n\|p\|q\|r\|u\|v\|w\|x\|y' ipv6words80-2.txt > ipv6words80-3.txt

Now, we will remove any words that are longer than 4 characters. You could optionally skip this step, however you will end up creating words in your IPv6 addresses that will have colons in them. I don’t really want that, so I’m going to pull out only the words that are 4 characters in length or less. We can use grep to complete this step.

grep -E '^[[:alpha:]]{4}$' ipv6words80-3.txt > ipv6words80-4.txt
grep -E '^[[:alpha:]]{3}$' ipv6words80-3.txt >> ipv6words80-4.txt
grep -E '^[[:alpha:]]{2}$' ipv6words80-3.txt >> ipv6words80-4.txt
grep -E '^[[:alpha:]]{1}$' ipv6words80-3.txt >> ipv6words80-4.txt

Next, we will convert everything to lowercase using the tr command, and write to the ipv6words80-5.txt file…

$ tr '[A-Z]' '[a-z]' < ipv6words80-4.txt > ipv6words80-5.txt

Now, when displaying IPv6 addresses, the leading 0 in any group of 4 hexadecimal digits will be omitted (so the address 2001:db8:0la::1 is written as 2001:db8:1a::1), so we need to remove any words that begin with the letter o.

grep -v ^o ipv6words80-5.txt > ipv6words80-6.txt

This time, let’s sort the IPv6 word list and remove the duplicates (after converting everything to lowercase, we will end up having some duplicate words). This can be accomplished with the sort command…

$ sort -u ipv6words80-6.txt > ipv6words80-7.txt

Finally, we have a list of IPv6 words which we can actually use! All that is left is for us to convert the non-hexadecimal letters to numbers…

sed -i 's/o/0/g' ipv6words80-7.txt
sed -i 's/i/1/g' ipv6words80-7.txt
sed -i 's/l/1/g' ipv6words80-7.txt
sed -i 's/z/2/g' ipv6words80-7.txt
sed -i 's/s/5/g' ipv6words80-7.txt
sed -i 's/t/7/g' ipv6words80-7.txt
sed -i 's/g/9/g' ipv6words80-7.txt

Now, we will sort for unique values one more time, and be done!

$ sort -u ipv6words80-7.txt > ipv6words80-8.txt

Now, starting with our original word list, we will end up with proper names, acronyms, and infrequently used words. We could optionally use a different word list that doesn’t contain these words, but I decided to keep them for a more complete list.

Also, this list may not contain many of the slang words and such that are common in today’s language.

As you can see from the list below, we can create an IPv6 address such as 2001:db8::ea7:beef:7ac0:d0g5 (eat beef taco dogs!).

And now, here is our completed IPv6 word list!

1
10
100
1005
1007
100f
1010
1011
1015
101a
101d
105
1055
1057
105e
107
1070
1071
1075
1077
107a
107e
109
1090
1095
109e
10a
10a5
10ad
10af
10b
10b0
10b1
10b5
10be
10c0
10c1
10ca
10d1
10d2
10da
10de
10eb
10ed
10f7
11
110
1105
111
1110
1111
1115
1117
111a
112
1125
112a
115
1157
115a
115e
117
1175
117e
119
1195
11a
11a0
11a5
11b
11b5
11ce
11d
11d0
11d5
11de
11e
11e5
11ea
11ed
11ef
11f0
11f7
11fe
120d
12ba
15
150
151
1515
151a
151e
157
15a7
15ba
15d
15d5
17
170
1711
175
17a
17a1
17a5
17d
19
190
1905
199
1995
19a
19ad
19b0
19e
1a
1a0
1a05
1a10
1a11
1a1a
1a1c
1a1d
1a1e
1a2e
1a5
1a51
1a55
1a57
1a5e
1a7
1a71
1a75
1a7a
1a7e
1a9
1a90
1a95
1aa
1aa5
1ab
1ab5
1abe
1ac
1ac5
1ace
1ad
1ad5
1add
1ade
1aea
1aff
1b
1b0
1b05
1b15
1b1d
1b5
1c
1ca0
1cc
1cd
1cd5
1ce
1ce1
1ce5
1ced
1d
1d0
1d01
1d05
1d1
1d15
1d1e
1d5
1da
1da5
1dc
1de
1de5
1dea
1ded
1dee
1e
1e0
1e05
1e1
1e15
1e1a
1e1f
1e2
1e5
1e55
1e57
1e5a
1e7
1e70
1e75
1e77
1e7a
1e9
1e90
1e95
1ea
1ea1
1ea5
1ea7
1ead
1eaf
1eb0
1ec7
1ed
1ed5
1eda
1ee
1ee5
1ee7
1eed
1ef7
1f
1f5
1fc
1fc5
1ff
2
20
200
2001
2005
201a
201c
205
20a
20b0
20e
20e5
20ea
2111
211a
212
2122
217
2171
2175
217e
219
2195
21b0
21ff
222
25
2a
2a5
2a71
2a9
2a95
2e1
2e11
2e15
2e2e
2e57
2e7a
2ea
2ea1
2ea5
2ed
2ed5
2ee
2ee5
5
50
5001
5007
501
5010
5011
5015
501a
501d
501e
505
5050
5055
505a
507
5070
5075
509
5095
50b
50b5
50ba
50c
50c5
50ca
50d
50d5
50da
50f7
50fa
51
5107
5109
510b
510e
5110
5111
5117
511a
511d
511e
512e
515
5155
5157
517
5175
517a
517e
519
51a1
51a5
51a7
51a9
51ab
51b
51b5
51bb
51c
51c5
51ce
51d
51d5
51da
51de
51e
51ed
51ee
51f7
55
555
557
55a
55e
55e5
57
5701
5707
570a
570b
575
579
579e
57a
57a7
57a9
57ab
57d
57e
57e7
57ed
59
597
59d
5a
5a1
5a11
5a15
5a17
5a1c
5a1d
5a1e
5a2
5a55
5a5a
5a5e
5a7
5a71
5a75
5a7e
5a9
5a90
5a95
5a9a
5a9e
5aab
5ab
5ab5
5aba
5abe
5ac
5ac0
5ac5
5ad
5ad1
5ade
5afe
5b
5b5
5ba
5c
5c07
5c09
5c1
5c10
5c5
5c51
5ca7
5ca9
5cab
5cad
5d
5d1
5e
5e1
5e11
5e12
5e15
5e1d
5e1e
5e1f
5e2
5e5
5e55
5e5e
5e7
5e75
5e77
5e7a
5e9
5e90
5e95
5e9a
5ea
5ea1
5ea5
5ea7
5ec
5ec0
5ec5
5ec7
5ed
5ee
5ee1
5ee5
5eed
5f
7
70
700
7001
7007
7011
7017
701a
701d
701e
702e
7055
705a
705e
707
7070
7072
7075
707e
709
7090
7095
709a
70ad
70b
70be
70c
70c0
70d
70d5
70dd
70e
70e5
70ea
70ed
70f7
70ff
71
711
7111
7115
7117
711e
7122
715
717
7170
7171
7175
717e
719
7195
719e
71a
71a5
71b
71b5
71c
71c5
71ce
71d
71d5
71de
71e
71e5
71ed
71f7
71ff
75
791f
7a
7a0
7a05
7a1
7a11
7a15
7a17
7a19
7a1a
7a1c
7a1e
7a1f
7a5
7a55
7a7
7a71
7a75
7a77
7a7e
7a9
7a95
7aa1
7ab
7ab1
7ab5
7ac0
7ac7
7ace
7ad
7ad5
7ae1
7af
7af7
7b
7b5
7ba
7c
7c5
7cdd
7d
7dd
7e
7e1
7e11
7e15
7e17
7e1a
7e1d
7e1e
7e5
7e51
7e55
7e57
7e7
7e75
7e7e
7e9
7e95
7e99
7ea
7ea1
7ea5
7ea7
7ead
7ed
7ed5
7ee
7ee1
7ee5
7eed
7ef
7ef1
7ef5
7eff
9
90
900
9001
9005
9009
900d
900f
901d
901f
905
9055
907
909
9090
90a
90a1
90a5
90a7
90ad
90af
90b
90b0
90b1
90b5
90d
90d5
90e1
90e5
90ff
91
910
9105
910b
911
9111
9115
9117
911a
911b
911d
911e
9122
912a
915
9157
917
9175
917a
917e
919
9190
9191
9195
919a
91ad
91b
91b5
91be
91d
91d5
91de
91e
91e1
91e5
91e9
91ed
91ee
91f
91f7
95
95a
97
97d
97e
97e5
9a
9a0
9a1
9a11
9a15
9a17
9a1a
9a1d
9a1e
9a2
9a2a
9a2e
9a5
9a55
9a57
9a7
9a75
9a77
9a7e
9a9
9a95
9a9a
9a9e
9ab
9ab0
9ab5
9aba
9ad
9ad1
9ad5
9ade
9ae1
9ae5
9aea
9aff
9b
9b5
9ca
9d
9d5
9e
9e0
9e01
9e05
9e09
9e0d
9e1
9e15
9e1d
9e5
9e57
9e7
9e72
9e75
9e7a
9ea1
9ea7
9ed
9ed5
9ee
9ee2
9ee5
9eed
9eff
9f1
9fc1
a
a01
a015
a1
a10d
a10e
a11
a115
a11f
a15
a150
a17
a170
a175
a17a
a19
a19a
a1a
a1a1
a1a5
a1ae
a1b
a1b1
a1b5
a1ba
a1be
a1c0
a1d
a1d0
a1d5
a1da
a1de
a1e
a1e5
a1ea
a1ec
a1ee
a1ef
a1f
a1f5
a1fa
a2
a20
a21e
a25
a27
a275
a5
a51
a515
a51a
a55
a555
a557
a571
a5a
a5a5
a5a7
a5c0
a5c1
a5ea
a7
a70c
a711
a75
a77
a7c
a7c0
a7e
a7e5
a9
a90
a909
a910
a95
a9a
a9a5
a9c
a9e
a9e5
a9ed
a9ee
aa
aa1
aa15
aa5
aaa
ab
ab0
ab05
ab1
ab1b
ab1e
ab5
ab55
aba
aba5
abac
abb
abb5
abba
abbe
abc
abc5
abd
abd5
abe
abe1
abe5
abe7
abed
ac
ac15
ac1d
ac5
ac7
ac75
ac79
ac7a
acc
acc7
ace
ace5
aced
ad
ad0
ad05
ad17
ad2e
ad5
ada
ada5
adc
add
add5
ade1
ae
aec
aec5
af
af7
afb
afc
afdc
aff
b
b0
b00
b005
b007
b00b
b01
b010
b011
b017
b01a
b01d
b01e
b02
b020
b05
b055
b05c
b05e
b07
b070
b075
b077
b07a
b09
b095
b09a
b0a
b0a2
b0a5
b0a7
b0b
b0b5
b0ba
b0d
b0d5
b0de
b0ff
b1
b10
b101
b105
b107
b109
b10b
b10c
b111
b11e
b12
b125
b12e
b15
b17
b170
b175
b177
b17e
b19
b195
b199
b19a
b1a
b1a5
b1a7
b1a9
b1ab
b1ad
b1ae
b1b
b1b1
b1b5
b1bb
b1c
b1c5
b1ce
b1d
b1d1
b1d5
b1d9
b1de
b1e1
b1e7
b1eb
b1ed
b1ee
b1ff
b5
b55
b5a
b5d
b5d5
b7
b71
b75
ba
ba1
ba11
ba15
ba17
ba1a
ba1d
ba1e
ba5
ba55
ba57
ba5e
ba7
ba75
ba77
ba7e
ba9
ba95
baa
baa1
baa5
bab
bab1
bab5
baba
babb
babe
bac7
bad
bad5
bade
bae2
baf7
baff
bb
bb1
bb15
bb5
bbb
bbc
bc
bc5
bc9
bcd
bd
bd1
be
be1
be11
be15
be17
be19
be1a
be2
be5
be55
be57
be7
be75
be7a
be7e
be9
be90
be95
bea7
bead
bebe
bed
bed5
bede
bee
bee5
bee7
beeb
beef
bf
c
c0
c00
c001
c005
c007
c00f
c01
c010
c011
c015
c017
c01a
c01d
c01e
c01f
c02
c02e
c05
c055
c057
c05e
c07
c075
c077
c07e
c09
c095
c0a1
c0a7
c0b
c0b5
c0bb
c0c0
c0ca
c0d
c0d5
c0da
c0de
c0ed
c0f7
c0ff
c1
c105
c107
c109
c10d
c110
c111
c117
c15
c157
c15c
c17
c170
c175
c17e
c19
c195
c1a
c1a0
c1a5
c1a9
c1ad
c1d
c1e0
c1e9
c1ef
c2
c5
c57
c575
c5c
c7
c75
c9
ca
ca1
ca10
ca11
ca1d
ca1e
ca1f
ca5
ca55
ca57
ca5a
ca5e
ca7
ca70
ca75
ca77
ca7e
ca9e
caa
cab
cab5
caba
caca
cad
cad1
cad5
cade
cafe
caff
cb
cb5
cbc
cbc5
cc
cc5
ccd
cd
cd5
cd7
cdc
ce
ce0
ce05
ce1
ce11
ce15
ce17
ce5
ce55
ce70
ce7e
cea
cea5
ceca
ced1
cede
cee
cee5
cf
cf0
cf5
cfc
cfc5
d
d0
d00
d001
d005
d00b
d01
d011
d015
d017
d01a
d01e
d02
d02e
d05
d055
d057
d05e
d07
d075
d07e
d09
d095
d09e
d0a
d0a7
d0ab
d0b
d0b5
d0be
d0c
d0c5
d0d
d0d0
d0d5
d0e
d0e5
d0ff
d1
d10
d101
d105
d111
d15
d155
d157
d15a
d15c
d17
d172
d175
d177
d17a
d17e
d19
d195
d1a1
d1a5
d1a9
d1b
d1b5
d1c7
d1ce
d1d
d1d0
d1e
d1e1
d1e5
d1e7
d1eb
d1ed
d1f
d1f5
d1ff
d2
d20
d205
d5
d50
d505
d57
d75
d7d
d9
d95
da
da1
da11
da15
da17
da1e
da2e
da5
da55
da57
da7
da70
da75
da7a
da7e
da9
da90
da95
daa1
dab
dab5
dace
dad
dad0
dad5
dada
dadd
dae
daf7
daff
db
db1
db5
dc
dc5
dd
dd1
dd5
dd55
dd7
dd75
ddc
ddd
dde
dded
de
de0
de05
de1
de11
de15
de17
de1d
de1e
de1f
de5
de55
de5c
de9
dea
dea1
dead
deaf
deb
deb5
deb7
dec
dec0
dec1
dec5
decd
dee
dee5
dee7
deed
def
def1
def7
e
e0
e01a
e05
e055
e0e
e1
e10
e105
e11
e112
e115
e11a
e11d
e15
e15a
e15e
e17
e175
e199
e1a
e1ba
e1be
e1c0
e1d
e1d5
e1de
e1ea
e1f
e1f5
e2
e2e1
e5
e51
e55
e55e
e57
e575
e57e
e5c
e5d
e5e
e5e5
e7
e71c
e77a
e7a
e7a5
e7a7
e7c
e7d
e9
e90
e905
e99
e990
e995
e9a1
e9ad
ea
ea1e
ea5
ea57
ea5e
ea7
ea75
ead5
ebb
ebb5
ec
ec0
ec01
ec05
ec0d
ec9
ec95
ecad
ecc0
ecc1
ecce
ed
ed0
ed05
ed17
ed5
ed7
ed7a
ed9e
edb
edd0
edda
ede
ee
ee0
ee0c
ee1
ee15
ee9
ee95
eec
eec5
ef
ef1
ef5
ef7
ef75
ef7a
eff
eff5
f
f0
f00
f001
f005
f007
f00d
f01
f011
f01a
f01d
f055
f09
f095
f0a1
f0b
f0b5
f0e
f0e5
f0f1
f1
f10
f105
f109
f10c
f10e
f11
f110
f111
f115
f117
f11a
f11c
f11e
f12
f122
f157
f15c
f17
f175
f177
f19
f190
f195
f1a
f1a7
f1a9
f1ab
f1b
f1b5
f1c0
f1ca
f1ce
f1d
f1d0
f1d5
f1de
f1e
f1e5
f1ea
f1ed
f1ee
f1ef
f1f0
f1fe
f5
f5f
f7
f75
f7c
fa
fa0
fa05
fa11
fa1a
fa2e
fa5
fa57
fa7
fa75
fa7e
fa9
fa95
faa
fab
fab5
fac
fac7
face
fad
fad0
fad5
fade
faff
fb1
fb15
fca
fcc
fd
fd1c
fda
fe
fe0d
fe11
fe15
fe17
fe2
fe25
fe5
fe55
fe57
fe7
fe75
fe7a
fe7e
fe95
fea1
fea7
feb
feb5
fec
fed
fed5
fee
fee1
fee5
fee7
feeb
feed
ff

Of course, some words can be hard to read (200 = zoo), but this is really just for fun, so who cares?!

Here is a simple little bash script that will take any word list as input and create a list of valid IPv6 words for you. Enjoy!

#!/bin/bash

VERSION=0.6
TMPOUT1=/tmp/ipv6words1
TMPOUT2=/tmp/ipv6words2

if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
        echo
        echo "Make IPv6 Word List version $VERSION"
        echo "Copyright 2013 Sophiedogg.com"
        echo "This script may be freely used and distrubuted, so long as credit"
        echo "to the original author remains in place."
        echo
        echo "Usage: $0 [wordlist]"
        echo
        echo "This script will make a list of IPv6 words from the input file."
        echo "An output file will be created in the same location as the"
        echo "original file, with the extension .ipv6words."
        echo
        echo "Options:"
        echo "  -h, --help                 display this help message"
        echo
elif [ ! $1 ]; then
        echo
        echo "You must specify a word list to start from."
        echo
        echo "Usage: $0 [wordlist]"
        echo
else
        if [ ! -e $1 ]; then
                echo
                echo "File $1 does not exist"
                echo
        else
                echo
                grep -iv 'h\|j\|k\|m\|n\|p\|q\|r\|u\|v\|w\|x\|y' $1 > $TMPOUT1

                perl -pi -e 's/\xC0/A/g' $TMPOUT1
                perl -pi -e 's/\xC1/A/g' $TMPOUT1
                perl -pi -e 's/\xC2/A/g' $TMPOUT1
                perl -pi -e 's/\xC3/A/g' $TMPOUT1
                perl -pi -e 's/\xC4/A/g' $TMPOUT1
                perl -pi -e 's/\xC5/A/g' $TMPOUT1
                perl -pi -e 's/\xC6/AE/g' $TMPOUT1
                perl -pi -e 's/\xC7/C/g' $TMPOUT1
                perl -pi -e 's/\xC8/E/g' $TMPOUT1
                perl -pi -e 's/\xC9/E/g' $TMPOUT1
                perl -pi -e 's/\xCA/E/g' $TMPOUT1
                perl -pi -e 's/\xCB/E/g' $TMPOUT1
                perl -pi -e 's/\xCC/I/g' $TMPOUT1
                perl -pi -e 's/\xCD/I/g' $TMPOUT1
                perl -pi -e 's/\xCE/I/g' $TMPOUT1
                perl -pi -e 's/\xCF/I/g' $TMPOUT1
                perl -pi -e 's/\xD0/D/g' $TMPOUT1
                perl -pi -e 's/\xD1/N/g' $TMPOUT1
                perl -pi -e 's/\xD2/O/g' $TMPOUT1
                perl -pi -e 's/\xD3/O/g' $TMPOUT1
                perl -pi -e 's/\xD4/O/g' $TMPOUT1
                perl -pi -e 's/\xD5/O/g' $TMPOUT1
                perl -pi -e 's/\xD6/O/g' $TMPOUT1
                perl -pi -e 's/\xD8/O/g' $TMPOUT1
                perl -pi -e 's/\xD9/U/g' $TMPOUT1
                perl -pi -e 's/\xDA/U/g' $TMPOUT1
                perl -pi -e 's/\xDB/U/g' $TMPOUT1
                perl -pi -e 's/\xDC/U/g' $TMPOUT1
                perl -pi -e 's/\xDD/Y/g' $TMPOUT1
                perl -pi -e 's/\xDF/B/g' $TMPOUT1
                perl -pi -e 's/\xE0/a/g' $TMPOUT1
                perl -pi -e 's/\xE1/a/g' $TMPOUT1
                perl -pi -e 's/\xE2/a/g' $TMPOUT1
                perl -pi -e 's/\xE3/a/g' $TMPOUT1
                perl -pi -e 's/\xE4/a/g' $TMPOUT1
                perl -pi -e 's/\xE5/a/g' $TMPOUT1
                perl -pi -e 's/\xE6/ae/g' $TMPOUT1
                perl -pi -e 's/\xE7/c/g' $TMPOUT1
                perl -pi -e 's/\xE8/e/g' $TMPOUT1
                perl -pi -e 's/\xE9/e/g' $TMPOUT1
                perl -pi -e 's/\xEA/e/g' $TMPOUT1
                perl -pi -e 's/\xEB/e/g' $TMPOUT1
                perl -pi -e 's/\xEC/i/g' $TMPOUT1
                perl -pi -e 's/\xED/i/g' $TMPOUT1
                perl -pi -e 's/\xEE/i/g' $TMPOUT1
                perl -pi -e 's/\xEF/i/g' $TMPOUT1
                perl -pi -e 's/\xF0/o/g' $TMPOUT1
                perl -pi -e 's/\xF1/n/g' $TMPOUT1
                perl -pi -e 's/\xF2/o/g' $TMPOUT1
                perl -pi -e 's/\xF3/o/g' $TMPOUT1
                perl -pi -e 's/\xF4/o/g' $TMPOUT1
                perl -pi -e 's/\xF5/o/g' $TMPOUT1
                perl -pi -e 's/\xF6/o/g' $TMPOUT1
                perl -pi -e 's/\xF8/o/g' $TMPOUT1
                perl -pi -e 's/\xF9/u/g' $TMPOUT1
                perl -pi -e 's/\xFA/u/g' $TMPOUT1
                perl -pi -e 's/\xFB/u/g' $TMPOUT1
                perl -pi -e 's/\xFC/u/g' $TMPOUT1
                perl -pi -e 's/\xFD/y/g' $TMPOUT1
                perl -pi -e 's/\xFF/y/g' $TMPOUT1

                grep -E '^[[:alpha:]]{4}$' $TMPOUT1 > $TMPOUT2
                grep -E '^[[:alpha:]]{3}$' $TMPOUT1 >> $TMPOUT2
                grep -E '^[[:alpha:]]{2}$' $TMPOUT1 >> $TMPOUT2
                grep -E '^[[:alpha:]]{1}$' $TMPOUT1 >> $TMPOUT2

                tr '[A-Z]' '[a-z]' < $TMPOUT2 > $TMPOUT1

                grep -v ^o $TMPOUT1 > $TMPOUT2

                sort -u $TMPOUT2 > $TMPOUT1

                sed -i 's/o/0/g' $TMPOUT1
                sed -i 's/i/1/g' $TMPOUT1
                sed -i 's/l/1/g' $TMPOUT1
                sed -i 's/z/2/g' $TMPOUT1
                sed -i 's/s/5/g' $TMPOUT1
                sed -i 's/t/7/g' $TMPOUT1
                sed -i 's/g/9/g' $TMPOUT1

                sort -u $TMPOUT1 > $TMPOUT2
                rm -rf $TMPOUT1
                mv $TMPOUT2 $1.ipv6words

                echo "Output written to $1.ipv6words"

                echo
        fi
fi