zBase=$(basename "{query}")
title=${zBase%.*}
echo -n $title;
上面的命令将文件名复制到剪贴板(使用 Alfred:{query} 部分来自 Alfred)。现在,我只想复制文件名的第一个单词。我该如何修改它?
这是一个示例文件名:
John 2015 名词和动词结构.pdf
上述推荐在我的剪贴板中提供了 [John 2015 名词和动词结构]。现在,我只想得到约翰在我的剪贴板中。
答案1
title=$(echo $title | cut -d" " -f1)
在 echo 之前添加此内容。它在每个空格处剪切了名称并采用第一部分 -> 你想要做什么
答案2
您可以简单地使用已用于删除扩展的 shell 内置变量扩展,而不是使用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