大文字の行のみを小文字に変換

大文字の行のみを小文字に変換

たとえば、次のような場合があるとします。

One, Two.
OnE, Two.
ONE, TWO.

すべての大文字の行を小文字に置き換えたいので、次のような結果を得ます。

One, Two.
OnE, Two.
one, two.

努力しています:

gsed '/[a-z]/!c\L&'

行と正確に一致しますが、L&に置き換えられます。

One, Two.
OnE, Two.
L&

どのように小文字に変換できますか?

Lの前にバックスラッシュを2〜3個試しましたが、出力にのみ表示されます。

より良いオプションがある場合は、awk、tr、または他のユーティリティを使用します。

また、バージョンが重要な場合:

gsed --version
gsed (GNU sed) 4.9

ベストアンサー1

POSIX awkを使用してください。

$ awk '!/[[:lower:]]/ { $0=tolower($0) } 1' file
One, Two.
OnE, Two.
one, two.

おすすめ記事