Post

Sed y regex

Aquí una chuletilla para cuando quiera hacer sustituciones rapidas:

Sustitucion cadena:

1
sed -i 's/word1/word2/g' input

Podemos sustituir directamente y hacer una copia de seguridad con:

1
sudo sed -i'.bak' 's/bullseye/bookworm/g' /etc/apt/sources.list

Encuentra la palabra word1 y sustituyela por word2 usando sed

1
sed -i 's/word1/word2/g' input

Podemos cambiar el delimitador de una manera simple:

1
2
sed -i 's+word1+word2+g' input
sed -i 's_word1_word2_g' input

Podemos añadir la opcion I para que sea “insensitive”

1
2
sed -i 's/word1/word2/gI' input
sed -i 's_word1_word2_gI' input

Sustitucion cadena en vi

1
:s/esto/poresto/g

Aplico a todo el contenido del fichero

1
:%s/esto/poresto/g

Elimino lineas en blanco:

1
cat archivo | sed '/^ *$/d' > nuevo_archivo

Simulando lo que va a hacer

1
find . -mtime +4 |awk '{print "ls " $1}

Añadiendo el ksh ejecutamos la acción

1
2
find . -mtime +4 |awk '{print "ls " $1}|ksh
find . -mtime +4 |awk '{print "rm -r " $1}|ksh

Todo el contenido de un directorio y subdirectorios con permisos (mejor redireccionar a un archivo)

1
find . | awk '{print "ls -l " "*" $1}'|sh > ruta
1
find . |sed 's/(/\\(/g' | sed 's/)/\\)/g' |sed 's/ /\\ /g' |sed 's/\&/\\\&/g'|sed 's/\$/\\\$/g' | awk  'BEGIN { FS=":" } {print "ls -l " $1}' 

Encuentra | sustituye interior de []

1
find . |sed 's/[()\ \&\$]/\\&/g' | awk  'BEGIN { FS=":" } {print "ls -l " $1}'

Listo contenido de directorio, y lo meto en un fichero

1
ls -1 *pdf >los_buenos

Lista el contenido de un directorio, y lo comparas con el contenido de un archivo, mostrara en pantalla el contenido que difiera.

1
ls -1 *pdf | grep -v -f los_buenos

Borra, del directorio, las lineas del fichero los buenos, que estan en el directorio.

1
ls -1 *pdf | grep -v -f los_buenos  | xargs rm

Chuletas de tratamiento:

1
2
3
 ls -1 *pdf | awk '{ print "mv " $1 " directorio"}'
 ls -1 *pdf | awk '{ print "mv " $0 " directorio"}'
 ls -1 *pdf | awk '{ print "mv \"" $0 "\" directorio"}'

Borrar por inodos:

1
 find . -inum <inode> -exec rm -i {} \;
This post is licensed under CC BY 4.0 by the author.