I want to shuffle the lines of a text file randomly and create a new file. The file may have several thousands of lines.
How can I do that with cat, awk, cut, etc.?
You can use
shuf. On some systems at least (doesn't appear to be in POSIX).
As jleedev pointed out:
sort -R might also be an option. On some systems at least; well, you get the picture. It has been pointed out that
sort -R doesn't really shuffle but instead sort items according to their hash value.
sort -R almost shuffles, except that duplicate lines / sort keys always end up next to each other. In other words: only with unique input lines / keys is it a true shuffle. While it's true that the output order is determined by hash values, the randomness comes from choosing a random hash function - see manual.]