sudo: Jack of all trades, master of some

Cómo hacer un slug con bash

6 comentarios

Recientemente necesité eliminar los caracteres especiales, sustituir los espacios por guiones y convertir en minúsculas cierta cadena de caracteres (slug).

echo "$STRING" | iconv -t ascii//TRANSLIT | sed -r s/[^a-zA-Z0-9]+/-/g | sed -r s/^-+\|-+$//g | tr A-Z a-z

Donde:

iconv -t ascii//TRANSLIT

Convierte los caracteres acentuados en su contraparte no acentuada, ejemplo Áá por Aa.

sed -r s/[^a-zA-Z0-9]+/-/g

Elimina todos los caracteres no ASCII (con repeticiones).

sed -r s/^-+\|-+$//g

Elimina los guiones (con repeticiones) al inicio y final de la cadena.

tr A-Z a-z

Convierte los caracteres a minúsculas.

Comentarios desactivados
  1. Percaff_TI99 5 años atrás

    Siempre me ha costado entender el mecanismo de ‘sed’ una herramienta de gran utilidad; el comando ‘tr’ es nuevo para mí -muy interesante-.

    El que sí he usado es ‘iconv’ en una instalación de OpenIndiana para poder utilizar el driver broadcom 4312:

    Convertir el archivo .inf a ascii en lugar de UTF:

    iconv -f utf-16 -t ascii bcmwl5.inf > /path/ndis-1.x.x/1386/ndis.inf

    Saludos.

    1. @Percaff_TI99

      Bueno, de igual modo se puede usar tr, a veces es más cómodo y sencillo que sed, tabmién se pudieron hacer sustituciones, por ejemplo usar: [[:alpha:]], sin embargo lo hice así quizá por hacerlo un poco más legible.

  2. Por Oden, como está el geek.. :D.

    import re
    import unicodedata

    def make_me_slug(malformed):
    malformed = unicodedata.normalize(
    'NFKD', malformed).encode('ascii', 'ignore')
    malformed = re.compile(b'[^\w\s-]').sub('', malformed).strip().lower()
    malformed = re.compile(b'[-\s]+').sub('-', malformed)
    print(malformed)

  3. PLP, viking, formatea el código que salió como le salió de los plugins. Thx in advance.

    1. @Ozkar

      No se puede compay, la culpa es de la plataforma, you know… ya he denunciado tal cosa pero la solución está fuera de mis manos.

  4. Richard 4 años atrás

    Quisiera compartir un truco que hago para guardar información secreta es bastante sencillo y seguro, en cmd de windows crean un notepad de la siguiente forma:

    C:\>notepad nombre.txt:password

    de este modo se crea un txt con password, la única manera de abrirlo es del mismo modo que lo crearon, también al copiarlo debe ser por consola de otro modo no se copia la información guardada en el archivo oculto.

    Nota:la extención puede ser cualquiera o ninguna.
    Espero les sea útil, a mí me ha servido mucho…
    Richard Ricardo
    Ing.Informático
    Prog.: de todo
    Sldos