awk 'length($0) >= 4' keeps lines of at least four characters. Two details decide whether the result is what you meant.
Whitespace counts unless you trim
A line of three spaces has length three; a line of six spaces passes a threshold of four while containing nothing. If the intent is a minimum of meaningful content, trim first and measure the result, not the raw line.
Characters, bytes, or grapheme clusters
awk's length() counts characters in a UTF-8 locale and bytes otherwise, so a four-character accented word may measure as six or seven under the wrong locale and pass a filter it should have failed. Where the threshold represents something a human would perceive as length, the correct unit is grapheme clusters, which most tools do not offer โ in practice, characters after normalising to NFC is close enough.
Off-by-one on the boundary
>= and > differ by exactly the rows sitting on the threshold, which is frequently a meaningful number of them. State the intent explicitly rather than discovering the convention by counting the output.
Try it: Remove Lines Shorter Than on SeoWolf's Notepad.