9 - Shell
9 - Shell
9 - Shell
Comienza en la pimera línea y avanza línea por linea, grep copia una línea en un
Buffer y la compara con el string que está buscando, y si la comparasión pasa, imprime la
linea en pantalla.
La opción –l imprime solo el nombre del archivo en el query que tiene lineas que
Hacen match en la busqueda. Util para cuando estas buscando en varios archivos.
$ grep –l “bo”
Es una manera de describir patrones complejos en un texto. Con grep, puedes usar
REGEX para buscar patrones.
Las cadenas normales que hemos estado usando hasta ahora son expresiones
regulares muy simples. También puede encontrarlos si usa comodines como '*' o '?'
al enumerar nombres de archivos, etc. Puede usar grep para buscar usando
expresiones regulares básicas, como buscar líneas que terminen con la letra e:
Si quieres puedes hacer match con una o mas ocurrectias usando el comando ?
También puedes usar el pipe (|) lo que significa “o” entonces puedes hacer eto:
Es un comando que opera en todas las lineas de un archivo de entrada. Puede tener
Una sección opcional BEGIN {} que son la precondición, una sección media {} y un END{}
BEGIN { .... Inicialización de comandos awk...}
{ .... Comandos awk...}
END { .... Finalización de awk...}
AWK mira cada linea como un número de campos, cada uno separado por un
‘separador’. Por defecto, este separador es el espacio en blanco.
AWK
Fernandos-MacBook-Pro:Desktop fernandolovera$ ls -l
total 8
drwxr-xr-x 11 fernandolovera staff 374 Mar 14 10:28
01698 FERNANDO LOVERA
-rw-r--r-- 1 fernandolovera staff 69 Mar 15 18:18
archivo.txt
Fernandos-MacBook-Pro:Desktop fernandolovera$ ls -l |
awk 'BEGIN {sum=0}{sum=sum+$5} END{print sum}'
443
Es util para saber el tamaño total de todos los archivos en este directorio que podría hacer:
AWK
Tenga en cuenta que 'print sum' imprime el valor de la suma variable, de modo que si sum = 2,
'print sum' da el resultado '2', mientras que 'print $ sum' imprimirá '1', ya que el segundo campo
contiene el valor '1 '.Por lo tanto, sería sencillo escribir un comando awk que calcule la media
y la desviación estándar de una columna de números: acumulará 'sum_x' y 'sum_x2' dentro de
la parte principal, y luego usará las fórmulas estándar para calcular la media y la desviación
estándar en la parte FINAL.AWK proporciona soporte para bucles (tanto 'para' como 'while') y
para bifurcación (usando 'if'). Entonces, si quisieras recortar un archivo y solo operar en cada
3ra línea, por ejemplo, podrías hacer esto:
Fernandos-MacBook-Pro:Desktop fernandolovera$
Fernandos-MacBook-Pro:Desktop fernandolovera$ ls -l | awk '{for (i=1;i<3;i++) {getline}; print
NR,$0}'
3 -rw-r--r-- 1 fernandolovera staff 69 Mar 15 18:18 archivo.txt
sed = stream editor
sed realiza transformaciones de texto básicas en una secuencia de entrada (un archivo
o entrada de una canalización) en una sola pasada a través de la secuencia, por lo que
es muy eficiente. Sin embargo, es la capacidad de sed de filtrar texto en una
canalización que lo distingue particularmente de otros tipos de editor.
sed can be used at the command-line, or within a shell script, to edit a file non-
interactively. Perhaps the most useful feature is to do a 'search-and-replace' for one
string to another.
You can embed your sed commands into the command-line that invokes sed using the '-
e' option, or put them in a separate file e.g. 'sed.in' and invoke sed using the '-f sed.in'
option. This latter option is most
Fernandos-MacBook-Pro:Desktop used if the sedsed
fernandolovera$ commands are complex
-e 's/input/output/' and involve lots
archivo.txt
bota of regexps! For instance:
Libro
bebida
maquina
botas
ladrar
USB
arepa$
Continuación
¿Qué ocurre si uno de los caracteres que desea utilizar en el comando de búsqueda es un
símbolo especial, como '/' (por ejemplo, en un nombre de archivo) o '*', etc.? Entonces debes
escapar del símbolo igual que para grep (y awk). Digamos que quiere editar los scripts del shell
para referirse a / usr / local / bin y not / bin más, entonces podría hacer esto
La forma general es:
sed –e ‘/patron/comando’ mi_archivo
donde 'patrón' es una expresión regular y 'comando' puede ser uno de 's' = buscar y reemplazar,
o 'p' = imprimir, o 'd' = eliminar, o 'i' = insertar, o 'a' = anexar , etc. Tenga en cuenta que la
acción predeterminada es imprimir todas las líneas que no coinciden de todos modos, por lo
que si desea suprimir esto, debe invocar sed con el indicador '-n' y luego puede usar el
comando 'p' para controlar lo que está impreso Entonces, si desea hacer una lista de todos los
subdirectorios, puede usar
Fernandos-MacBook-Pro:Desktop fernandolovera$ ls -l | sed -n -e '/^d/ p'
drwxr-xr-x 11 fernandolovera staff 374 Mar 14 10:28 01698 FERNANDO LOVERA