一尘不染

linux bash,驼峰大小写字符串用破折号分隔

linux

有没有办法转换这样的事情:

MyDirectoryFileLine

my-directory-file-line

我发现了一些将所有字母都转换为大写或小写字母的方法,但不是那样。有任何想法吗?


阅读 512

收藏
2020-06-02

共1个答案

一尘不染

您可以使用s/\([A-Z]\)/-\L\1/g查找大写字母并将其替换为破折号,然后将其转换为小写字母。但是,这在行的开头给您一个破折号,因此您需要另一个sed表达式来处理它。

这应该工作:

sed --expression 's/\([A-Z]\)/-\L\1/g' \
    --expression 's/^-//'              \
    <<< "MyDirectoryFileLine"
2020-06-02