在Bash中是否有一种简单的方法将拼音单词分解为其组成单词?我怎样才能削减(1)驼峰的话?
例如,我想将aCertainCamelCasedWord拆分为'某种驼峰字',并能够选择那些感兴趣的字段。当单词分隔符是下划线时,使用剪切(1)可以轻松完成此操作,但是,如果单词是基于单词的,我怎么能做到这一点?
在Bash中是否有一种简单的方法将拼音单词分解为其组成单词?我怎样才能削减(1)驼峰的话?
例如,我想将aCertainCamelCasedWord拆分为'某种驼峰字',并能够选择那些感兴趣的字段。当单词分隔符是下划线时,使用剪切(1)可以轻松完成此操作,但是,如果单词是基于单词的,我怎么能做到这一点?
sed 's/\([A-Z]\)/ \1/g'
捕捉每个大写字母和替代与捕获整个数据流的主要空间。
$ echo "aCertainCamelCasedWord" | sed 's/\([A-Z]\)/ \1/g'
a Certain Camel Cased Word
纯击:
name="aCertainCamelCasedWord"
declare -a word # the word array
counter1=0 # count characters
counter2=0 # count words
while [ $counter1 -lt ${#name} ] ; do
nextchar=${name:${counter1}:1}
if [[ $nextchar =~ [[:upper:]] ]] ; then
((counter2++))
word[${counter2}]=$nextchar
else
word[${counter2}]=${word[${counter2}]}$nextchar
fi
((counter1++))
done
echo -e "'${word[@]}'"
有趣,但更详细。为我说的工作使用正确的工具! ;) – 2009-03-19 15:15:07
我需要不分裂全部大写:
echo 'FAQPage' |sed 's/\([A-Z][^A-Z]\)/ \1/g'
FAQ Page
This answer当有多个大写
的第二个实例无法正常工作echo 'FAQPageOneReplacedByFAQPageTwo' | sed 's|\([A-Z][^A-Z]\)| \1|g'
FAQ Page One Replaced ByFAQ Page Two
所以和额外的表达是必需的
echo 'FAQPageOneReplacedByFAQPageTwo' | sed -e 's|\([A-Z][^A-Z]\)| \1|g' -e 's|\([a-z]\)\([A-Z]\)|\1 \2|g'
FAQ Page One Replaced By FAQ Page Two
我爱正则表达式。 – cwallenpoole 2009-03-05 17:53:06