GNU/Linux >> Linux Esercitazione >  >> Linux

linux bash, stringa camel case da separare con un trattino

Propongo di usare sed per farlo:

NEW=$(echo MyDirectoryFileLine        \
     | sed 's/\(.\)\([A-Z]\)/\1-\2/g' \
     | tr '[:upper:]' '[:lower:]')

AGGIORNAMENTO Ho dimenticato di convertire in minuscolo, codice aggiornato


Puoi usare s/\([A-Z]\)/-\L\1/g per trovare una lettera maiuscola e sostituirla con un trattino ed è minuscola. Tuttavia, questo ti dà un trattino all'inizio della riga, quindi hai bisogno di un'altra espressione sed per gestirlo.

Dovrebbe funzionare:

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

Linux
  1. Rendi invernale il tuo prompt Bash in Linux

  2. Come abbreviare il prompt di Bash in Linux?

  3. Utilizzando un riferimento a una variabile di stringa Bash in Sed?

  4. Ignora maiuscole e minuscole in glob() su Linux

  5. Come sostituire una stringa in più file nella riga di comando di Linux

Comando della cronologia in Linux (Cronologia di Bash)

Come usare bash if -z e if -n per testare le stringhe in Linux

Sostituzione di String in Bash

Bash Scripting – Manipolazione di stringhe

Bash Scripting – Case Statement

Cosa fare in caso di panico del kernel Linux