Skip to content

Instantly share code, notes, and snippets.

@rodrigolive
Last active July 11, 2023 14:28
Show Gist options
  • Save rodrigolive/34f94987fb0f1e673c7a5688d84b85a1 to your computer and use it in GitHub Desktop.
Save rodrigolive/34f94987fb0f1e673c7a5688d84b85a1 to your computer and use it in GitHub Desktop.
07 : r_dwssap
#!/bin/bash
cat /etc/passwd | grep -v '^ *#' | sed -n 'n;p' | sed 's/:.*$//' | rev | sort -r | sed -n "${FT_LINE1},${FT_LINE2}p" | paste -sd "," - | sed 's/,/, /g'|sed 's/$/./'
@rodrigolive
Copy link
Author

rodrigolive commented Mar 4, 2021

cat /etc/passwd
Ver contenido del fichero

grep -v '^ *#'
Descartar las líneas que empiecen por # (haya espacios o no)

sed -n 'n;p'
Imprimir a partir de la segunda línea, saltando cada 2 líneas.

sed 's/:.*$//'
Borrar todo .* después del primer : hasta el final de la línea, quedándonos con el nombre usuario.

rev
Dar la vuelta a cada nombre de usuario, pepito se convierte en otipep

sort -r
Ordenar líneas en orden alfabético inverso

sed -n "${FT_LINE1},${FT_LINE2}p"
Usamos sed para seleccionar un rango de líneas entre FT_LINE1 y FT_LINE2.
Por ejemplo, si el primero es 7 y el segundo 16, el sed, después de la interpolación de las 2 variables,
quedaría así sed -n "7,16p" que significa coger las líneas comprendidas entre 7 y 16 inclusivas.

paste -sd "," -
El comando paste junta a las líneas en una sola línea. Ponemos como delimitador -d el caracter ,.
Desafortunadamente no nos permite poner más de 1 caracter, así que...

sed 's/,/, /g'
Reemplazamos la coma por coma-espacio , .

sed 's/$/./'
Y para cerrar ponemos un punto al final.

Para probar el script:

FT_LINE1=2 FTLINE2=7 ./r_dwssap.sh
Tá chupado! 😆

@crismoraba
Copy link

Dios mío, este, chupadísimo 🤯🤯🤯

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment