Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia |
linux:bash:sed [21/08/2018 00:18] – [ejemplos] mate | linux:bash:sed [10/04/2019 00:30] (actual) – [ejemplos avanzados] mate |
---|
* ''!'' : negar la condición | * ''!'' : negar la condición |
* ''q'' : finalizar procesamiento de fichero | * ''q'' : finalizar procesamiento de fichero |
| <code bash> |
| sed 's/busca/reemplaza/g' /path/to/file(s) |
| </code> |
| |
== parámetros | == parámetros |
<code bash>sed -i "3,5d" distros-deb.txt # de la línea 3 a la 5 | <code bash>sed -i "3,5d" distros-deb.txt # de la línea 3 a la 5 |
sed -i "2,$d" distros-deb.txt # de la línea 2 al final</code> | sed -i "2,$d" distros-deb.txt # de la línea 2 al final</code> |
| |
| ejemplo docker |
| <code bash>sed -i /etc/ssh/sshd_config \ |
| -e 's/#PermitRootLogin.*/PermitRootLogin no/' \ |
| -e 's/#RSAAuthentication.*/RSAAuthentication yes/' \ |
| -e 's/#PasswordAuthentication.*/PasswordAuthentication no/' |
| </code> |
| |
== ejemplos avanzados | == ejemplos avanzados |
añadir texto a una línea, respetando el contenido existente (y haciendo match). Uso de subexpresión | añadir texto a una línea, respetando el contenido existente (y haciendo match). Uso de subexpresión (backreference) |
<code bash>sed -i "1,12s/\(host: \)[^ ]*/\1localhost/" config/database.yml</code> | <code bash>sed -i "1,12s/\(host: \)[^ ]*/\1localhost/" config/database.yml</code> |
* ''-i'' : sobrrescribe el fichero (config/database.yml en este caso) | * ''-i'' : sobrrescribe el fichero (config/database.yml en este caso) |
* ''(host: )'' : busca esa cadena, pero además la guarda. En la instrucción ( y ) están escapados <- subexpresión | * ''(host: )'' : busca esa cadena, pero además la guarda. En la instrucción ( y ) están escapados <- subexpresión |
* ''[^ ]*'' : cualquier número de caracteres que no sean espacios ?? | * ''[^ ]*'' : cualquier número de caracteres que no sean espacios ?? |
* ''\1 <cadena>'' : recupera el texto guardado en la anterior expresión y le añade <cadena>''.. el 1 está escapado! | * ''\1 <cadena>'' : recupera el texto guardado en la anterior expresión y le añade <cadena>.. el 1 está escapado! |
* | |
| insertar línea antes de match, backup del fichero modificado |
| <code bash> |
| sed -i.bak '/<\/tomcat-users>/ i\<user username="admin" password="password" roles="admin,manager-gui,admin-gui"/>' /opt/tomcat/conf/tomcat-users.xml |
| </code> |
| |
| === búsquedas |
buscar frases de un texto que tengas 6 palabras (y acaben en algo que no sea una letra): | buscar frases de un texto que tengas 6 palabras (y acaben en algo que no sea una letra): |
<code bash>grep -E '^([a-zA-Z]+[^a-zA-Z]+){6}$' frases</code> | <code bash>grep -E '^([a-zA-Z]+[^a-zA-Z]+){6}$' frases</code> |