if u want a solution that's not dependent on unicode-compliance of the utility app, for the main block of AC00-D7AF, u can use
(([\352][\260-\277]|[\353\354][\200-\277]|
[\355][\200-\235])[\200-\277]|[\355][\236][\200-\243]) # mawk/gawk -b
that slab expanded out would be
(\355\236(\200|\201|\202|\203|\204|\205|\206|\207|
\210|\211|\212|\213|\214|\215|\216|\217|\220|\221|
\222|\223|\224|\225|\226|\227|\230|\231|\232|\233|
\234|\235|\236|\237|\240|\241|\242|\243)|
(\352(\260|\261|\262|\263|\264|\265|\266|
\267|\270|\271|\272|\273|\274|\275|\276|\277)|
\355(\200|\201|\202|\203|\204|\205|\206|\207|
\210|\211|\212|\213|\214|\215|\216|\217|\220|
\221|\222|\223|\224|\225|\226|\227|\230|\231|
\232|\233|\234|\235)|(\353|\354)
(\200|\201|\202|\203|\204|\205|\206|\207|\210|
\211|\212|\213|\214|\215|\216|\217|\220|\221|
\222|\223|\224|\225|\226|\227|\230|\231|\232|
\233|\234|\235|\236|\237|\240|\241|\242|\243|
\244|\245|\246|\247|\250|\251|\252|\253|\254|
\255|\256|\257|\260|\261|\262|\263|\264|\265|
\266|\267|\270|\271|\272|\273|\274|\275|\276|
\277))(\200|\201|\202|\203|\204|\205|\206|\207|\210
|\211|\212|\213|\214|\215|\216|\217|\220|\221
|\222|\223|\224|\225|\226|\227|\230|\231|\232
|\233|\234|\235|\236|\237|\240|\241|\242|\243
|\244|\245|\246|\247|\250|\251|\252|\253|\254
|\255|\256|\257|\260|\261|\262|\263|\264|\265
|\266|\267|\270|\271|\272|\273|\274|\275|\276|\277))
if u need the extra stuff - jamo, compatability jamo, circled form, parenthesized form, and half width form, append this one to the one above
either
[\341\204\200-\341\207\277
\343\204\260-\343\206\217
\352\245\240-\352\245\277
\355\236\260-\355\237\277
\343\200\256-\343\200\257
\343\210\200-\343\210\236
\343\211\240-\343\211\276
\357\276\240-\357\276\276
\357\277\202-\357\277\207
\357\277\212-\357\277\217
\357\277\222-\357\277\227
\357\277\232-\357\277\234] # gawk unicode-mode only
or
((\343\205|\355\237|\341(\204|\205|\206|\207))
(\200|\201|\202|\203|\204|\205|\206|\207|\210|\211
|\212|\213|\214|\215|\216|\217|\220|\221|\222|\223
|\224|\225|\226|\227|\230|\231|\232|\233|\234|\235
|\236|\237|\240|\241|\242|\243|\244|\245|\246|\247
|\250|\251|\252|\253|\254|\255|\256|\257|\260|\261
|\262|\263|\264|\265|\266|\267|\270|\271|\272|\273
|\274|\275|\276|\277)|(\343\204|\355\236)(\260|\261
|\262|\263|\264|\265|\266|\267|\270|\271
|\272|\273|\274|\275|\276|\277)|\343\206(\200|\201
|\202|\203|\204|\205|\206|\207|\210|\211|\212|\213
|\214|\215|\216|\217)|\352\245(\240|\241|\242|\243
|\244|\245|\246|\247|\250|\251|\252|\253|\254|\255
|\256|\257|\260|\261|\262|\263|\264|\265|\266|\267
|\270|\271|\272|\273|\274|\275|\276|\277)
|\343\200\256|\343\200\257|
\343\210(\200|\201|\202|\203|\204|\205|\206|\207
|\210|\211|\212|\213|\214|\215|\216|\217|\220|\221|
\222|\223|\224|\225|\226|\227|\230|\231|\232|\233|
\234|\235|\236)|(\343\211|\357\276)
(\240|\241|\242|\243|\244|\245|\246|\247|\250|\251
|\252|\253|\254|\255|\256|\257|\260|\261|\262|\263
|\264|\265|\266|\267|\270|\271|\272|\273|\274|\275
|\276)|\357\277(\202|\203|\204|\205|\206|\207|\212
|\213|\214|\215|\216|\217|\222|\223|\224|\225|\226
|\227|\232|\233|\234))
if you only need the modern jamo that makes up the 11,172 syllable collection, then it's a lot cleaner :
((\341)((\204)[\200-\222]|(\205)[\241-\265]|(\206)[\250-\277]|(\207)[\200-\202]))
or if u prefer it without superfluous brackets :
(\341(\204[\200-\222]|\205[\241-\265]|\206[\250-\277]|\207[\200-\202]))
ps : i only formatted like this here for readability. there aren't any spaces tabs or new line in between those octal codes. it's one continuous string.
personally i'd much rather work with clean modern era regex myself, but using these octals are an necessary evil for myself to bring mawk1.3.4 and mawk2-beta up to full UTF8 compliancy.
(at least in terms of lengthC() ordC() substrC() and character-level splitting but at the UC13 code-point level, plus hangul-only NFD-to-NFC.
but nothing fancy like grapheme clusters or bi-directional texts)