For the fourth time, in the last command you give, you redirect the standard
output of 'grep '[0-9]$' to a file before a pipe: that is wrong and I do not
know how to explain it to you in a clearer way than what I attempted in my
three last posts.
Because there is an odd number of single quotes, the shell considers that the
command is unfinished and lets you type the rest of it. It does not "stall".
It lets you write more. As the character at the beginning of the line, ">",
indicates. The whole AWK program should be between single quotes.
That program makes no sense: the index i of the loop is never used, you
apparently try to call external commands without the AWK's system function,
you 'cut' characters starting from the 22nd (?), you apparently try to test
if the return value (a number) of three piped commands are equal to a file
(except that 'awk' will interpret CPV-GB-OneCol0-6192019.txt as an
uninitialized variable, hence ""), you apparently try to print that file and
"intermediate.txt" (but print does not print files, which will be here
understood as uninitialized variables anyway), etc.
You should learn about the shell and then about the text-processing commands.
For instance using the material I have already pointed to you in
https://trisquel.info/forum/separating-hostnames-having-multiple-ipv4-addresses-long-two-column-list#comment-140501