Buscar en el universo: shellscript

Results 1 - 10 of 14

Resultados

Oct 24 17:43

Use Ruby as AWK

A few examples about how to use Ruby for parsing files as we could do with Awk. This is based on what I learn fro this post: http://code.joejag.com/2009/using-ruby-as-an-awk-replacement/
# Split each line with ':' and print the first $F[0] field
ruby -F: -nae 'puts $F[0]' /etc/passwd
 
# Parse the 'ps aux' output
# It'll print the ID process for the 'jojeda' user
ps aux | ruby -nae 'puts $F[1] if $F[0] == "jojeda"'
 
#
# From the original post:
# ‘-n’ makes the Ruby iterate over all lines successively assigning them to $_
# ‘-a’ makes Ruby split $_ into its parts assigning the result to $F which is an array of strings
# ‘-e’ means that what follows is code to be executed.
# ‘-F’ specifies the column separator
#
 
# Added more examples here: https://gist.github.com/
Lenguaje: 
bash
Oct 09 05:47

Arrays en BASH

Ejemplos de como crear y usar arrays en BASH
### Arrays en bash ###
 
## Declarar un array
# 1 - Con typeset o declare
typeset ARRAY[10] # Definido un array de nombre ARRAY de 10 elementos
typeset -a VECTOR # Definido un array de nombre VECTOR sin tamaño definid
decalre ARRAY[10] # Definido un array de nombre ARRAY de 10 elementos
declare -a VECTOR # Definido un array de nombre VECTOR sin tamaño definid
 
# 2 - Declarando y asignando
LIST[0]="Tomate"  # Se crea un array LIST cuyo primer elemento es "tomate"
NAMES=(Pepe Ana Juan Antonio María)  # Se crea una lista yle asigna los nombre.
 
## Asignar valores
# NOMBRE_ARRAY[indic
Lenguaje: 
bash
Sep 27 15:08

Añadir cabeceras al código de un proyecto

Muchas veces tienes un proyecto sin cabeceras de licencias y necesitas añadírselas pero no quieres ir archivo por archivo.
# Let's say the header template is at ~/header.txt , it's coded on java
# and is at ~/Projects/superproject
 
$ cd ~/Projects/superproject
$ licensecheck -r --copyright -i * | awk -F: '/No copyright/ && /java/ {print $1}' | xargs sed -i '1{h; r ~/header.txt
D;}
2{x; G;}'
 
# licensecheck is a script shipped by devscripts package
Lenguaje: 
bash
Sep 15 00:45

Eliminar espacios al final de las líneas en un archivo

Muchas veces nuestro editor añade espacios al final de las líneas, lo cual puede dar problemas con parches o la sintaxis del lenguaje que usemos. Con esto se pueden eliminar de una sola vez.
# [es] Supongamos que filename.py es el archivo en cuestión
# [en] Let's say filename.py is the name of the file
sed -i 's/[ \t]*$//' filename.py
 
# [es] Para hacerlo en todo un repositorio (~/git/project/)
#      y que sólo lo queremos hacer el los archivos de Python
# [en] If we like to parse and fix a whole repository (i.e. ~/git/project/)
#      and we just want to change the Python files
find ~/git/project/ -name "*.py" | xargs sed -i 's/[ \t]*$//'
Lenguaje: 
bash
Sep 09 11:29

[BASH] asegurarse que todo va a la tubería.

A veces un comando nos da parte de la salida que vemos por la salida de error y al querer filtrar esto, la tubería no funciona como esperábamos. Y si no entendéis lo que cuento ejecutad esto: iwconfig|grep eth0
iwconfig |& grep eth0
 
Con esto nos aseguramos que todo va a ir a parar a la tubería.
Lenguaje: 
bash
Nov 07 09:13

Imprimir una columna de una linea filtrandola por su contenido con awk

Como me he decidido a guardar toda sentencia sed/awk que vaya usando y me lleve más de 5mins resolverla para tenerlo a mano a posteriori, aquí pongo otro snippet que imprimirá; una columna de una linea filtrandola por su contenido con una condición.
# esto imprimirá solo las columnas que contengan "root"
 
$ awk '{for (i=1;i<=NF;i++)  if ( $i ~ "root" ) print $i}' /proc/cmdline
 
# Se le podrían poner condiciones más complejas, por ejemplo, usando regex.
Lenguaje: 
bash
Nov 04 11:30

Borrar la linea número N de un fichero con 'sed'

Aquellos que uséis ssh a diario con máquinas virtuales y demás, conoceréis el incordio que es arreglar esto: "Offending key in /home/usuario/.ssh/known_hosts:60" Normalmente yo abría con un "vi /home/usuario/.ssh/known_hosts +60" pulsaba dos veces la tecla 'd' y ':x', pero esto se hacía pesado, así que empecé a hacerlo con 'sed'. Y aquí tenéis dos ejemplos sencillos, uno para imprimir la linea N y otro para borrarla respectivamente:
sed -n '60p' /home/usuario/.ssh/known_hosts
sed -i '60d' /home/usuario/.ssh/known_hosts
Lenguaje: 
bash
Oct 09 03:40

Obtener la IP de una interfaz de red (eth0), pero sólo la IP

Un ejemplo de uso de AWK, en el que se busca la IP de una interfaz de red.
ifconfig eth0 | awk '/inet addr/ {split ($2,A,":"); print A[2]}'
Lenguaje: 
bash
Oct 09 03:32

Borrar una línea específica con sed

Algunos ejemplos de borrar líneas concretas con sed
# borrar la línea 18 del archivo '~/.ssh/known_hosts'
sed -i '18 d' ~/.ssh/known_hosts
 
# o también 
sed -i 18d ~/.ssh/known_hosts
 
# borrar algunas líneas:
# borrar 6 líneas a partir de la línea 8
sed -i 8,+6d file.txt 
 
 
# borrar la línea donde se encuentre el texto 'TO DELETE'
sed -i '/TO DELETE/ d' file.txt
Lenguaje: 
bash
Nov 11 13:48

Obtener la interfaz de red wireless

Para aquellas veces que se necesita conocer la interfaz wifi de un equipo en un script o algo.
awk -F: '/:/ {gsub(" ","",$1); print $1}' /proc/net/wireless
Lenguaje: 
bash