Estoy agregando una función a una secuencia de comandos existente que permitirá al usuario configurar el nombre de host de un sistema Linux. Las reglas que estoy hacer cumplir son los siguientes:¿Cómo puedo garantizar que una cadena de Bash sea alfanumérica, sin un guión bajo?
- debe estar entre 2 y 63 caracteres de longitud
- no debe comenzar o terminar con un guión
- sólo puede contener caracteres alfanuméricos y guiones; todos los demás caracteres no están permitidos (incluido un guión bajo, lo que significa que no puedo usar el símbolo \ W regex)
He resuelto los dos primeros en la lista, pero tengo problemas para averiguar cómo para verificar si una cadena de bash contiene solo letras, dígitos y guiones. Creo que puedo hacer esto con una expresión regular, pero estoy teniendo problemas para averiguar cómo (he pasado la última hora buscando en la web y leyendo páginas man).
Estoy abierto a usar sed, grep o cualquiera de las otras herramientas estándar, pero no Perl o Python.
¿Cómo se utiliza la segunda expresión con grep? Estoy buscando modificadores en la página de manual pero sin éxito: me estoy haciendo eco de una cadena que debe coincidir y no se genera nada. –
@Montecristo: 'grep -E' o' egrep' – Welbog
Lo intenté con esto: echo 1asdas * _- | grep -E '^ [[: alnum:]] [-: alnum:]] {0,61} [[: alnum:]] $', sin salida (también sin comillas simples), lol debería preguntar pregunta, creo ...: P –