1

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)

phuclv
  • 37,963
  • 15
  • 156
  • 475
KolonUK
  • 443
  • 1
  • 6
  • 14

1 Answers1

3

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.

Thomas
  • 174,939
  • 50
  • 355
  • 478