在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