Es imprescindible interpretar el código correctamente previamente a aplicarlo a tu trabajo y si tdeseas aportar algo puedes dejarlo en los comentarios.
Solución:
cut -f 1 input.txt
Esto le da la primera columna del archivo delimitado por tabulaciones input.txt
. El delimitador de campo predeterminado para cut
es el carácter de tabulación, por lo que no es necesario especificarlo más.
Si el delimitador es Realmente un espacio, uso
cut -d ' ' -f 1 input.txt
Si resulta que hay múltiple tabulaciones y/o espacios, utilice awk
:
awk ' print $1 ' input.txt
El bucle de shell no es necesario para esta operación, independientemente de si usa cut
o awk
.
Consulte también “¿Por qué se considera una mala práctica usar un bucle de shell para procesar texto?”.
La razón por la que su secuencia de comandos no funciona es porque la pestaña desaparece cuando echo
la variable sin comillas.
Relacionados:
-
¿Por qué printf es mejor que echo?
-
Implicaciones de seguridad de olvidar citar una variable en shells bash/POSIX
Pestaña es el separador predeterminado para cut
no necesita un argumento explícito para ello.
Sin embargo, debe citar su variable para evitar que las pestañas se conviertan en espacios.
SN=`echo "$line"|cut -f1`
Pero también puedes evitar usar cut
en primer lugar. solo configura IFS
para t
.
IFS=$'t'
while read -r SN rest
do
echo "$SN"
done < input.txt
Al final de todo puedes encontrar las críticas de otros desarrolladores, tú de igual forma puedes mostrar el tuyo si te gusta.