Home > other >  Prevent final character from being a number
Prevent final character from being a number

Time:03-18

In bash, I run the following to get a random string:

LC_CTYPE=C tr -dc 'a-z0-9' </dev/urandom | fold -w 5 | head -n1

However, I need to make sure the last character is not a number.

What can I add to the command to do this, keeping it as a one-liner?

(I'd like it to be the same length, but if I have to trim it to 4 chars, so be it)

CodePudding user response:

Use grep to select those lines that meet the criterion, and only then take the first one:

LC_CTYPE=C tr -dc 'a-z0-9' </dev/urandom | fold -w 5 | grep '[^0-9]$' | head -n1

By the way, echo $(x) is a nonsensical construct most of the time; you can just write x instead.

  • Related