Copie a primeira palavra do nome do arquivo

0
 zBase=$(basename "{query}")
title=${zBase%.*}
echo -n $title;

O comando acima copia o nome do arquivo para a área de transferência (usando o Alfred: a parte {query} é do Alfred). Agora, quero copiar apenas a primeira palavra do nome do arquivo. Como posso modificá-lo?

Aqui está um nome de arquivo de exemplo:

John 2015 Substantivo e estrutura do verbo.pdf

O comentário acima me dá [John 2015 Noun e estrutura do verbo] na minha área de transferência. Agora, quero ter apenas João na minha área de transferência.

    
por Dellu 01.06.2017 / 23:13

4 respostas

1

Em vez de usar ferramentas externas como sed , cut ou awk , você pode simplesmente usar a expansão de variável integrada do shell que já usou para remover a extensão:

echo -n ${title%% *}

Usar double %% significa remover a correspondência mais longa, então você remove tudo da variável que começa com o primeiro espaço em branco.

    
por 02.06.2017 / 05:37
2
title=$(echo $title | cut -d" " -f1)

Adicione isto antes do eco. É cortar o nome em cada espaço e leva a primeira parte - > O que você queria fazer

    
por 01.06.2017 / 23:22
1

Aqui vai você title=$(echo $zBase|awk {'print $1'})

No awk $ 1 dá a primeira palavra, $ 2 2ª palavra e assim por diante.

    
por 02.06.2017 / 02:32
1

Você sempre pode confiar em qualquer ferramenta de processamento de texto para fazer o trabalho. Diga sed , por exemplo:

$ sed -r 's/^([[:alpha:]]*).*//' <<< "John 2015 Noun and verb structure.pdf"
John
    
por 02.06.2017 / 02:41