el editor ed y sus parientes
edbrowse
edBrowse es una variante de ed que permite acceder a páginas web, email (POP3) y bases de datos (ODBC)
sed
Expresiones regulares en sed: para usarlos como metacaracteres, hay que «escapar» +, (, ), ?
«ak* \+xx\?» -> «akkk xx3»
Sustitución reutilizando el patron
# Caso sencillo: 1 solo patron. Se puede usar &: # Añadir parantesis a cada secuencia de numeros sed 's/[0-9]*/(&)/' # Para varios patrones, se marcan los patrones a reutilizar con parentesis, # y se utiliza \1, \2 para referenciar cada patron encontrado: # Intercambiar el primer campo con el segundo. Por ejemplo, Type: abc-123 se convierte en Type: 123-abc sed 's/Type: \([a-z]*\)-\([0-9]*\)/Type: \2 \1/' # Elimina el path de una url, dejando solo hasta el hostname sed "s_\(http://[a-z0-9A-Z.\-]*/\)\(.*\)_\1_"
Extraer cadenas de una linea
Con egrep (grep -E) se puede imprimir la parte de una linea que coincida con un patron.
Por ejemplo, para extraer las temperaturas de una linea…
echo "Temp1: 37.2 C Temp2: 40.0 C" | grep -Eo '[0-9\.]+[[:punct:]]?[ ]?[CF]+'
Inserción de texto
# Añadir texto al final de una linea sed '/^wheel/ s_$_,newWheelUser_' /etc/group
Con i inserta un texto antes de la linea actual, con a despues. En ambos casos introduce un salto de linea. Por eso, para que inserte en la misma linea hay que recurrir a la sustitucion:
> sed iabcd fge abcd fge > sed aabcd geg geg abcd > sed s/^/abcd/g geg abcdgeg # Añadir una linea al final de varios ficheros de texto sed -i '$aexit 0' * # Añadirla al principio (con salto de lÃnea ;-) sed -i '1i. /home/group-bashrc\n' /home/*/.bashrc
Para ejecutar varios comandos sed en una lÃnea, separar con «;»
sed "s/NODE/$NODE/g;s/IP/$IP/g" < $TEMPLATE