
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
, cut
oder 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 sed
zum Beispiel:
$ sed -r 's/^([[:alpha:]]*).*/\1/' <<< "John 2015 Noun and verb structure.pdf"
John