Скопируйте первое слово имени файла

Скопируйте первое слово имени файла
 zBase=$(basename "{query}")
title=${zBase%.*}
echo -n $title;

Приведенная выше команда копирует имя файла в буфер обмена (используя Alfred: часть {query} взята из Alfred). Теперь я хочу скопировать только первое слово имени файла. Как мне его изменить?

Вот пример имени файла:

Джон 2015 Структура существительного и глагола.pdf

Вышеуказанная рекомендация дает мне [Джон 2015 Структура существительного и глагола] в моем буфере обмена. Теперь я хочу получить толькоДжонв моем буфере обмена.

решение1

title=$(echo $title | cut -d" " -f1)

Добавьте это перед echo. Это обрезает имя на каждом пробеле и берет первую часть -> То, что вы хотели сделать

решение2

Вместо использования внешних инструментов, таких как sed, cutили awk, вы можете просто использовать встроенное расширение переменной оболочки, которое вы уже использовали для удаления расширения:

echo -n ${title%% *}

Использование double %%означает удаление самого длинного совпадения, то есть удаление всего содержимого переменной, начиная с первого пробела.

решение3

Ну вот, title=$(echo $zBase|awk {'print $1'})

В awk $1 выдает первое слово, $2 — второе слово и т. д.

решение4

Вы всегда можете положиться на любой инструмент обработки текста, который выполнит эту работу. Например sed:

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

Связанный контент