
zBase=$(basename "{query}")
title=${zBase%.*}
echo -n $title;
上記のコマンドは、ファイル名をクリップボードにコピーします (Alfred を使用: {query} 部分は Alfred からのものです)。ここで、ファイル名の最初の単語だけをコピーしたいと思います。どうすれば変更できますか?
ファイル名の例を次に示します。
ジョン 2015 名詞と動詞の構造.pdf
上記のコマンドは私のクリップボードに[John 2015 名詞と動詞の構造]を表示します。次に、ジョンクリップボードに保存します。
答え1
title=$(echo $title | cut -d" " -f1)
これをエコーの前に追加します。スペースごとに名前がカットされ、最初の部分が取得されます -> 実行したい操作
答え2
sed
、cut
またはなどの外部ツールを使用する代わりにawk
、拡張子を削除するためにすでに使用したシェルの組み込み変数展開を単に使用できます。
echo -n ${title%% *}
double を使用すると、%%
最も長い一致が削除されるため、最初の空白から始まるすべてのものが変数から削除されます。
答え3
どうぞ、
title=$(echo $zBase|awk {'print $1'})
awk では、$1 は最初の単語、$2 は 2 番目の単語というようになります。
答え4
テキスト処理ツールは常に頼りにすることができます。sed
たとえば、次のようになります。
$ sed -r 's/^([[:alpha:]]*).*/\1/' <<< "John 2015 Noun and verb structure.pdf"
John