
zBase=$(basename "{query}")
title=${zBase%.*}
echo -n $title;
El comando anterior copia el nombre del archivo en el portapapeles (usando Alfred: la parte {query} es de Alfred). Ahora quiero copiar sólo la primera palabra del nombre del archivo. ¿Cómo puedo modificarlo?
Aquí hay un nombre de archivo de ejemplo:
John 2015 Estructura nominal y verbal.pdf
El elogio anterior me da [John 2015 Estructura verbal y sustantivo] en mi portapapeles. Ahora solo quiero obtenerJohnen mi portapapeles.
Respuesta1
title=$(echo $title | cut -d" " -f1)
Añade esto antes del eco. Corta el nombre en cada espacio y toma la primera parte -> Lo que querías hacer
Respuesta2
En lugar de usar herramientas externas como sed
, cut
o awk
, simplemente puede usar la expansión variable incorporada del shell que ya usó para eliminar la extensión:
echo -n ${title%% *}
Usar doble %%
significa eliminar la coincidencia más larga, por lo que elimina todo de la variable comenzando con el primer espacio en blanco.
Respuesta3
Aquí tienes,
title=$(echo $zBase|awk {'print $1'})
En awk $1 da la primera palabra, $2 la segunda palabra y así sucesivamente.
Respuesta4
Siempre puedes confiar en cualquier herramienta de procesamiento de texto para hacer el trabajo. Digamos sed
por ejemplo:
$ sed -r 's/^([[:alpha:]]*).*/\1/' <<< "John 2015 Noun and verb structure.pdf"
John