Linux - Tratamiento De Texto
Comandos - Tratamiento de textos
awk / gawk
- awk y gawk son lo mismo : GNU + awk → gawk
- Lenguaje de procesamiento de patrones y tratamiento de textos
- Lenguaje de análisis semántico
awk [options] program file ...
gawk [ POSIX or GNU style options ] -f program-file [ -- ] file ...
gawk [ POSIX or GNU style options ] [ -- ] program-text file ...
Opciones
- -F fs # –field-separator (Separador de patrones)
- Se usa para la separación de entrada de patrones (El valor de la fs predefinido por la variable)
- Para especificar un separador de archivos.
- Utilice fs para el separador del campo de entrada (el valor de la variable predefinida fs).
- -f file
- Para especificar un archivo que contenga un script awk (archivo-programa)
- Lee el código fuente del programa awk desde el archivo program-file, en lugar de hacerlo desde el primer argumento de la línea de comandos.
- Se pueden utilizar varias opciones -f (o –file)
- Los archivos leídos con -f son tratados como si comenzaran con una declaración implícita @nombre-espacio “awk”.
- -v var=value
- Para declarar una variable.
- Procesar archivos e imprimir resultados utilizando awk.
- Para definir un script awk utilizamos llaves rodeadas por unas comillas simples como se muestra a continuación:
awk '{print " Bienvenido a un ejemplo básico de awk "}'
Hola # Escribir cualquier cosa + pulsar Intro → Ejecuta el comando de arriba
Bienvenido a un ejemplo básico de awk # Se ejecuta automáticamente el comando print
Para terminar el programa, presiona Ctrl+D
- Procesar archivos de texto.
- Asignar variables a cada campo de los datos encontrado:
$0 # Para toda la línea.
$1 # Para el primer campo o espacio/separado dentro del archivo.
$2 # Para el segundo campo o espacio/separado dentro del archivo.
$n # Para el campo enésimo campo o espacio/separado dentro del archivo.
Los caracteres de espacio en blanco como el espacio o la tabulación es el separador por defecto entre los campos en el awk
awk '{print $1}' mi-archivo
~/Documents/pruebas$ cat archivo.txt
Esto es una prueba
Esto es una segunda prueba
Esto es una tercera prueba
Esto es una cuarta prueba
awk '{print $1}' archivo.txt
Esto # Solo coge la 1º columna de la 1º línea y la muestra por pantalla porque el texto esta separado por espacios
Esto # Solo coge la 2º columna de la 1º línea y la muestra por pantalla porque el texto esta separado por espacios
Esto # Solo coge la 3º columna de la 1º línea y la muestra por pantalla porque el texto esta separado por espacios
Esto # Solo coge la 4º columna de la 1º línea y la muestra por pantalla porque el texto esta separado por espacios
- El separador de los archivos ademas de los espacios y la tabulación, puedes especificarlo utilizando la opción
-F
awk -F: '{print $1}' /etc/passwd
root
daemon
bin
sys
sync
games
man
lp
mail
news
proxy
Utilizando Múltiples Comandos
echo "Hola Amigo" | awk '{$2="Compañero"; print $0}'
Hola Compañero # Cambio el 2º parametro de 'Amigo' por 'Compañero'
cut
- Eliminar secciones de cada línea de archivos
cut option... [file]...
Las opciones que tiene cut
si usa un delimitador, una posición de byte
o un carácter
para cortar las partes seleccionadas de las líneas:
-f (--fields=LIST) # Selecciona por un campo especifico , un campo establecido o un rango de campos (Esta es la opción más común).
-b (--bytes=LIST) # Selecciona por un byte especifico , establece bytes o rangos de bytes
-c (--characters=LIST) # Selecciona por un caracter especifico , un establecido caracter o un rango
Ejemplo
cat test.txt # Archivo original
# Si hay un espacio de separación 'cut' lo detectará como una sola columna
245:789 4567 M:4540 Admin 01:10:1980 # Cuando hay "un solo espacio" lo ve como una columna
535:763 4987 M:3476 Sales 11:04:1978 # Más de "dos espacios" lo considera una columna independiente
cut test.txt -f 1,3 # Seleccionamos los campos que queremos cortar y mostrar
245:789 4567 Admin
535:763 4987 Sales
sort
- Ordenar y fusionar archivos
sort [option]... [file]...
sort [option]... --files0-from=F
Ejemplo
cat abecedario-hexa.txt
a-97
b-98
c-99
d-100
e-101
f-102
g-103
h-104
i-105
j-106
k-107
l-108
m-109
n-110
o-111
p-112
q-113
r-114
s-115
t-116
u-117
v-118
w-119
x-120
y-121
z-122
sort -rn abecedario-hexa.txt
sed
- (Stream Editor)
- Permite realizar muchas funciones en archivos como buscar, reemplazar, insertar o eliminar.
- Principalmente reemplazar el texto en un archivo
sed [option]... {script-only-if-no-other-script} [input-file]...
sort abecedario.txt
Ejemplo sed
cat fichero.txt
"Voy a cambiar esta parte del archivo,
que es la parte que me interesa"
sed 's/esta parte/ESTA PARTE/' fichero.txt
"Voy a cambiar esta parte del archivo,
que es la parte que me interesa"
Salida :
"Voy a cambiar ESTA PARTE del archivo,
que es la parte que me interesa"
dos2unix / mac2unix / unix2dos
-
dos2unix - Convertidor de archivos de texto de formato DOS a Unix y viceversa
-
mac2unix - Convertidor de archivos de texto de formato Mac a Unix y viceversa
-
unix2dos - Convertidor de archivos de texto de formato Unix a DOS y viceversa
dos2unix a.txt b.txt # Convierte y reemplaza a.txt
dos2unix -o a.txt b.txt # Convierte y reemplaza b.txt.
# Convierte a.txt del formato de Mac a Unix.
dos2unix -c mac a.txt
mac2unix a.txt
# Convierte a.txt del formato de Unix a Mac.
unix2dos -c mac a.txt
unix2mac a.txt
# Convierte a.txt y escribe la salida a e.txt, manteniendo la fecha de e.txt igual a la de a.txt.
dos2unix -k -n a.txt e.txt
tr
- Para convertir y eliminar caracteres
- Puedes usarlo para convertir mayúsculas a minúsculas, juntar caracteres repetidos y borrar caracteres.
- Requiere dos conjuntos de caracteres para las transformaciones y también se puede usar con otros comandos usando tuberías Unix para comandos avanzados.
tr # Convertir (redefine o elimina) caracteres
tr [options] "set1" "set2" # Donde los set son un grupo de caracteres.
# Utiliza secuencias interpretadas, enumeró algunas de ellas
NNN -> carácter con valor octal NNN (1 a 3 dígitos octales)
\ -> barra invertida
n -> nueva línea
r -> return / volver
t -> pestaña horizontal
[:alnum:] -> todas las letras y dígitos
[:alpha:] -> todas las letras
[:blank:] -> todos los espacios en blanco horizontales
[:cntrl:] -> todos los caracteres de control
[:digit:] -> todos los dígitos
[:lower:] -> todas las letras minúsculas
[:upper:] -> todas las letras mayúsculas
Sintaxis básica
-c , -C , –complement -> Complementa el conjunto de caracteres en ‘set1’
-d , –delete -> Elimina los caracteres en set1.
-s , –squeeze-repeats -> Reemplace cada secuencia de entrada de un carácter repetido que se enumera en set1 con una sola aparición de ese carácter
Opciones
echo "something to translate" | tr "set1" "set2"
tr "set1" "set2" < file-to-translate
tr "set1" "set2" < file-to-translate > file-output
Ejemplo tr
- Convertir minúsculas a mayúsculas
echo "ejemplo de cambiar las minusculas por mayusculas" | tr [:lower:] [:upper:]
EJEMPLO DE CAMBIAR LAS MINUSCULAS POR MAYUSCULAS
tr "a-z" "A-Z" < ejemplo-letras.txt # Cambia el tamaño de las letras a mayusculas pero no lo almacena
EJEMPLO DE CAMBIAR LAS MINUSCULAS POR MAYUSCULAS
tr "a-z" "A-Z" < ejemplo-letras.txt > archivo-almacenar.txt # Para almacenar el contenido en un archivo
tr -d ',' <archivo-1> archivo-2 # Ejemplo de sintaxis para eliminar caracteres
cat ejemplo-letras.txt | tr -d "came?" # Le indicamos al comando que muestre el archivo y elimine todos los caracteres entre comillas dobles
jplo d bir ls inusuls por yusuls # Salida del comando eliminado todos los caracteres indicando entre comillas
vi
- Clásico editor de texto
vi # Abre el programa
:q # Para salir del editor
:!q # Para salir forzosamente del editor
:wq # Para guardar y salir forzosamente del editor
:!wq # Para guardar y salir forzosamente del editor
Deja un comentario