Kopieren Sie das erste Wort des Dateinamens

Kopieren Sie das erste Wort des Dateinamens
 zBase=$(basename "{query}")
title=${zBase%.*}
echo -n $title;

Der obige Befehl kopiert den Dateinamen in die Zwischenablage (mit Alfred: der Teil {query} stammt von Alfred). Jetzt möchte ich nur das erste Wort des Dateinamens kopieren. Wie kann ich es ändern?

Hier ist ein Beispieldateiname:

John 2015 Nomen- und Verbstruktur.pdf

Der obige Befehl gibt mir [John 2015 Nomen- und Verbstruktur] in meine Zwischenablage. Jetzt möchte ich nur nochJohnin meiner Zwischenablage.

Antwort1

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

Fügen Sie dies vor dem Echo hinzu. Es schneidet den Namen an jedem Leerzeichen ab und nimmt den ersten Teil -> Was Sie tun wollten

Antwort2

Anstatt externe Tools wie sed, cutoder zu verwenden awk, können Sie einfach die in die Shell integrierte Variablenerweiterung verwenden, die Sie bereits zum Entfernen der Erweiterung verwendet haben:

echo -n ${title%% *}

Die Verwendung von „double“ %%bedeutet, dass die längste Übereinstimmung entfernt wird, d. h. Sie entfernen alles aus der Variable, beginnend mit dem ersten Leerzeichen.

Antwort3

Bitte schön, title=$(echo $zBase|awk {'print $1'})

In awk gibt $1 das erste Wort an, $2 das zweite Wort und so weiter.

Antwort4

Sie können sich immer darauf verlassen, dass ein beliebiges Textverarbeitungsprogramm die Arbeit erledigt. Sagen Sie sedzum Beispiel:

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

verwandte Informationen