Cómo crear un script que a partir de un fichero de texto desordenado escribe otro con las líneas de texto ordenadas por la primera columna.

«vocabularioDesordenado.txt»

bud brote
stalk tallo
rod varilla
sessile inmóvil
slime baba, cieno, limo
pellicle película
pond estanque
ditch acequia
lice piojo
flea pulga

«vocabularioOrdenado.txt»

abattoir matadero
aetiological etiológico
beaker matraz
bite mordedura
bud brote
clumping puñado
creep deslizarse
ditch acequia
exacting estricto

Script bash:

#!/bin/bash

# Nombre del archivo de entrada
archivo_entrada="vocabularioDesordenado.txt"

# Nombre del archivo de salida
archivo_salida="vocabularioOrdenado.txt"


# Extraer la primera columna y ordenar alfabéticamente
cut -f1 "$archivo_entrada" | sort > "$archivo_salida"

echo "Se ha creado el archivo $archivo_salida con los términos de la primera columna ordenados alfabéticamente."

Otra manera de ordenar por la primera columna:

#!/bin/bash

# Este script funciona como quiero

# Nombre del archivo de entrada
archivo_entrada="vocabularioDesordenado.txt"

# Nombre del archivo de salida
archivo_salida="vocabularioOrdenado2.txt"

# Extraer las dos columnas, ordenar por la primera columna y guardar en archivo de salida
sort -k1 "$archivo_entrada" > "$archivo_salida"
echo "Se ha creado el archivo $archivo_salida con los términos de la primera columna ordenados alfabéticamente."

Si queremos ordenar por la segunda columna:

#!/bin/bash

# Este script funciona como quiero

# Nombre del archivo de entrada
archivo_entrada="vocabularioDesordenado.txt"

# Nombre del archivo de salida
archivo_salida="vocabularioOrdenado2.txt"

# Extraer las dos columnas, ordenar por la segunda columna y guardar en archivo de salida
sort -k2 "$archivo_entrada" > "$archivo_salida"
echo "Se ha creado el archivo $archivo_salida con los términos de la segunda columna ordenados alfabéticamente."