GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-Bash, Camel-Case-String zum Trennen durch Bindestrich

Ich schlage vor, dafür sed zu verwenden:

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

UPD Ich habe vergessen, in Kleinbuchstaben umzuwandeln, aktualisierter Code


Sie können s/\([A-Z]\)/-\L\1/g verwenden um einen Großbuchstaben zu finden und ihn durch einen Bindestrich und seinen Kleinbuchstaben zu ersetzen. Dadurch erhalten Sie jedoch einen Bindestrich am Anfang der Zeile, sodass Sie einen anderen sed-Ausdruck benötigen, um damit umzugehen.

Das sollte funktionieren:

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

Linux
  1. Wie kürze ich die Bash-Eingabeaufforderung unter Linux?

  2. Verwenden einer Referenz auf eine Bash-String-Variable in Sed?

  3. Wie kann ich am Anfang jeder Datei in einem Ordner in Bash eine Zeichenfolge hinzufügen?

  4. So ersetzen Sie eine Zeichenfolge in mehreren Dateien in der Linux-Befehlszeile

  5. Was macht 'bash -c'?

Verlaufsbefehl in Linux (Bash-Verlauf)

So verwenden Sie bash if -z und if -n zum Testen von Zeichenfolgen in Linux

Ersetzen von Zeichenfolgen in Bash

Bash-Scripting – String-Manipulation

Bash-Skripting – Case-Statement

Was tun bei einer Linux-Kernel-Panik?