GNU/Linux >> Znalost Linux >  >> Linux

linux bash, řetězec velbloudího pouzdra k oddělení pomlčkou

Navrhuji k tomu použít sed:

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

UPD Zapomněl jsem převést na malá písmena, aktualizovaný kód


Můžete použít s/\([A-Z]\)/-\L\1/g najít velké písmeno a nahradit ho pomlčkou a je to malá písmena. Tím však získáte na začátku řádku pomlčku, takže k tomu potřebujete další výraz sed.

Mělo by to fungovat:

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

Linux
  1. Použití odkazu na proměnnou bashového řetězce v Sed?

  2. Jak mohu přidat řetězec na začátek každého souboru ve složce v bash?

  3. Jak nahradit řetězec ve více souborech v příkazovém řádku linuxu

  1. Zazimujte výzvu Bash v Linuxu

  2. Jak zkrátit Bash Prompt v Linuxu?

  3. Ignorujte malá a velká písmena v glob() na Linuxu

  1. Analýza historie Bash v Linuxu

  2. Co dělá 'bash -c'?

  3. Odstraňte všechny speciální znaky a velká a malá písmena z řetězce v bash