我收到以下文本:
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
我想要大写,即每个单词的第一个字母大写。
预期结果
Lorem Ipsum Dolor Sit Amet, Consectetur Adipisicing Elit.
相当于 Bash
使用 bash,我使用了参数扩展:
function to-lower() { echo "$@" |tr '[:upper:]' '[:lower:]' ; }
function capitalize() {
input="$(to-lower "$@")"
for i in $input; do
cap=$(echo -n "${i:0:1}" | tr "[:lower:]" "[:upper:]")
echo -n "${cap}${i:1} "
done
echo
}
问题
我如何以 fish 的方式做到这一点?
最佳答案
Fish 目前没有任何工具可以执行此操作(在某个版本中),因此假设您有 GNU sed,您可以执行此操作:
function capitalize
echo $argv | sed 's/[^ _-]*/\u&/g'
end
还有各种其他工具,您也可以使用例如python 或通过从fish 调用bash,要点是无法提取子字符串或用fish 内置函数替换字符。
在下一个 Fish 版本中,您将能够使用 string sub -l 1 $i
提取第一个字符。
关于string - 如何将fish shell中的字符串大写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34207402/