
zBase=$(basename "{query}")
title=${zBase%.*}
echo -n $title;
O comando acima copia o nome do arquivo para a área de transferência (usando Alfred: a parte {query} é de Alfred). Agora, quero copiar apenas a primeira palavra do nome do arquivo. Como posso modificá-lo?
Aqui está um exemplo de nome de arquivo:
John 2015 Substantivo e estrutura verbal.pdf
O elogio acima me dá [John 2015 Substantivo e estrutura verbal] na minha área de transferência. Agora, eu quero obter apenasJohnna minha área de transferência.
Responder1
title=$(echo $title | cut -d" " -f1)
Adicione isso antes do eco. Corta o nome de cada espaço e pega a primeira parte -> O que você queria fazer
Responder2
Em vez de usar ferramentas externas como sed
, cut
ou awk
, você pode simplesmente usar a expansão variável integrada do shell que você já usou para remover a extensão:
echo -n ${title%% *}
Usar double %%
significa remover a correspondência mais longa, removendo tudo da variável começando com o primeiro espaço em branco.
Responder3
Aqui você vai,
title=$(echo $zBase|awk {'print $1'})
No awk $1 dá a primeira palavra, $2 a segunda palavra e assim por diante.
Responder4
Você sempre pode contar com qualquer ferramenta de processamento de texto para fazer o trabalho. Digamos sed
por exemplo:
$ sed -r 's/^([[:alpha:]]*).*/\1/' <<< "John 2015 Noun and verb structure.pdf"
John