macos - 在 MAC OS High sierra 中将文本转换为蛇形大小写到驼峰大小写
问题描述
我想将 2+ 个单词转换为驼峰式大小写。我尝试了在线 ubuntu 版本,它可以工作。但不是在mac os上。
my amazing-long_variable -> myAmazingLongVariable
echo "my amazing-long_variable" | sed -E 's/[ |_|-]([a-z])/\U\1/gi' | sed -E 's/^([A-Z])/\l\1/'
我的输出:
sed: 1: "s/[ |_|-]([a-z])/\U\1/gi": bad flag in substitute command: 'i'
第二次尝试:
echo "my amazing-long_variable" | sed -E 's/[ |_|-]([a-z])/\U\1/g' | sed -E 's/^([A-Z])/\l\1/'
输出:
myUamazingUlongU变量
谢谢
解决方案
\U
并且\l
是 GNU sed 扩展。Perl 会为你开箱即用:
echo "my amazing-long_variable" | perl -nE 'say lcfirst join "", map {ucfirst lc} split /[^[:alnum:]]+/'
你从右到左读这个
split /[^[:alnum:]]+/
$_
在任何非字母数字字符序列上拆分默认变量(即当前行),生成列表“my”、“amazing”、“long”、“variable”map {ucfirst lc}
依次将代码ucfirst lc
应用于每个单词。- 正如您可能猜到的那样,
lc
将单词小写,然后ucfirst
将第一个字符大写 - 这导致列表“My”、“Amazing”、“Long”、“Variable”
- 正如您可能猜到的那样,
join "",
使用空字符串连接单词:“MyAmazingLongVariable”lcfirst
第一个字符小写:“myAmazingLongVariable”
perl 选项-n
循环输入文件和/或标准输入,将每一行放在“默认变量”$_
中。-l
负责处理打印命令的行尾。
推荐阅读
- authentication - Wireshark - 从连接的 AP 捕获 AUTH&ASSOC 数据包
- ios - 裁剪 UIImage 没有产生预期的作物 - 迅速?
- aws-glue - AWS Glue 作业 python 脚本
- java - 当用户单击卡片视图时,如何从 Firebase 实时数据库中删除卡片视图上显示的特定记录。
- python - 如何在不使用函数的情况下在 python 中打印名称的反面?
- android - 圆角 ExpandableListView
- javascript - 如何在 JavaScript 中使用模型数据:ASP.NET Core
- mariadb - MariaDB AUTO_INCREMENT 行为,同时设置键为负
- reactjs - 当组件没有完全渲染而没有重复代码时,在每个组件上显示加载屏幕的最佳方式是什么
- c++ - 在按键上增加模型的加速度?