Ich habe eine Textdatei, in der einige Wörter in Großbuchstaben gedruckt sind. Ich möchte in der Lage sein, alles in der Textdatei einfach in Kleinbuchstaben umzuwandeln sed
. Das bedeutet, dass der erste Satz dann lauten würde: "Ich habe eine Textdatei, in der einige Wörter in Großbuchstaben gedruckt sind."
131
tr
Befehl? Manchmal ist es besser geeignet alssed
.Antworten:
Mit
tr
:Funktioniert mit GNU
sed
(BSDsed
unterstützt nicht\L
\U
):quelle
sed -e 's/.*/\L&/' input.txt > output.txt
für GNU sed funktioniert auch gutman sed
zu erfahren, welche Version Sie verwenden.U
vor jeder Zeile einWenn Sie GNU-Erweiterungen haben, können Sie sed's \ L (niedrigeres gesamtes Match oder bis \ L [niedriger] oder \ E [Ende - Gehäuse ausschalten] erreicht) verwenden, wie folgt:
Hinweis: '&' bedeutet das vollständige Übereinstimmungsmuster.
Als Randnotiz enthalten die GNU-Erweiterungen \ U (oben), \ u (oberes nächstes Übereinstimmungszeichen), \ l (unteres nächstes Übereinstimmungszeichen). Zum Beispiel, wenn Sie einen Satz camelcase wollten:
Hinweis: Da davon ausgegangen wird, dass wir GNU-Erweiterungen haben, können wir auch die Option dash-r (erweiterte reguläre Ausdrücke) verwenden, die \ w (Wortzeichen) zulässt und Sie davon befreit, sich der Erfassungsklammer und einer oder mehreren zu entziehen Quantifizierer (+). (Nebenbei:
\W [non-word], \s [whitespace], \S [non-whitespace]
auch mit strich r unterstützt, aber\d [digit]
und\D [non-digit]
sind es nicht.)quelle
sed -ri 's/MATCH_WHATEVER/\L&/i' input-file.ext
- Wenn Sie den/i
Modifikator verwenden, wird die Übereinstimmung zwischen Groß- und Kleinschreibung nicht berücksichtigt und ist daher optional. Der-i
Schalter weist sed an, die Datei an Ort und Stelle zu ändern. Sie müssen die Ausgabe nicht in eine andere Datei umleiten, wenn Sie dies nicht müssen.\E [end - toggle casing off]
. Danke !Sie können dies auch sehr einfach tun
awk
, wenn Sie bereit sind, ein anderes Tool in Betracht zu ziehen:quelle
tolower
würde nicht in der Lage zu handhabenÀ
zum Beispiells | awk '{print "mv " $0 " " tolower($0)}' | sh
Hier sind viele Lösungen:
Mit Perl, Tr, Sed und Awk upercaser
Mit Perl, Tr, Sed und Awk in Kleinbuchstaben schreiben
Komplizierte Bash in Kleinbuchstaben:
Komplizierte Bash in Großbuchstaben:
Einfache Bash in Kleinbuchstaben:
Einfache Bash in Großbuchstaben:
Beachten Sie, dass $ {v,} und $ {v ^} nur den ersten Buchstaben ändern.
Sie sollten es so verwenden:
quelle
Ausgabe:
quelle
Ich mag einige der Antworten hier, aber es gibt einen sed-Befehl, der auf jeder Plattform den Trick machen sollte:
Wie auch immer, es ist leicht zu verstehen. Und das Wissen über den Befehl y kann manchmal nützlich sein.
quelle
Wenn Sie posix sed verwenden
Auswahl für jeden Fall für ein Muster (Konvertieren des gesuchten Musters mit diesem Sed, als das konvertierte Muster in dem gewünschten Befehl mit Regex zu verwenden:
in Kleinbuchstaben konvertieren
Gleiches gilt für Großbuchstaben. Ersetzen Sie den unteren Buchstaben zwischen // durch das obere Äquivalent im sed
Habe Spaß
quelle
y//
ändern (eine Änderung des Inhalts der Quelle oder diekurz, süß und du brauchst nicht mal umzuleiten :-)
quelle