いくつかの小文字と大文字の内容を含むtemp
ファイルがあります。
temp
ファイルの内容:
hi
Jigar
GANDHI
jiga
すべてを変換したい上から下。
私は次のコマンドを試しました:
sed -e "s/[A-Z]/[a-z]/g" temp
しかし、間違った出力を得ました。
私はそれを次のようにしたいです:
hi
jigar
gandhi
jiga
sed
の引数のsubstitute部分には何が必要ですか?
入力にASCII文字のみが含まれている場合は、tr
を次のように使用できます。
tr A-Z a-z < input
または(IMOを覚えて入力するのは簡単ではありませんが、ASCIIラテン文字に限定されませんが、GNU tr
を含む一部の実装では、シングルバイト文字に制限されるため、UTF-8ロケールでは、ASCII文字)に制限されます。
tr '[:upper:]' '[:lower:]' < input
sed
を使用する必要がある場合:
sed 's/.*/\L&/g' < input
(ここではGNU実装を想定しています)。
POSIX sed
では、文字変換をすべて指定する必要があり、変換する文字を選択できます。
sed 'y/AǼBCΓDEFGH.../aǽbcγdefgh.../' < input
awk
の場合:
awk '{print tolower($0)}' < input
Vimを使用すると、非常に簡単です。
_$ vim filename
gg0guGZZ
_
ファイルを開き、gg
は最初の列_0
_の最初の列に移動します。 guG
を使用すると、すべての文字の大文字と小文字がファイルの末尾まで下がります。 ZZ
保存して終了します。
それはあなたが投げるほとんどすべてのものを処理するはずです。数字を無視し、非ASCIIを処理します。
逆にしたい場合は、小文字を大文字に変換し、u
をU
に置き換えてください。_gg0gUGZZ
_と設定できます。
私はdd
が好きです。
<<\IN LC_ALL=C 2<>/dev/null \
dd conv=lcase
hi
Jigar
GANDHI
jiga
IN
...取得...
hi
jigar
ghandi
jiga
LC_ALL=C
は、入力のマルチバイトを保護するためのものです。ただし、マルチバイトの大文字は変換されません。同じことが(GNU)tr
にも当てはまります-どちらのアプリも、C以外のロケールでは入力の変換が行われる傾向があります。 iconv
は、どちらかと組み合わせて包括的なソリューションを実現できます。
2>/dev/null
redirectは、dd
のデフォルトのステータスレポートとそのstderrを破棄します。これがないと、dd
は、処理されたバイト数などの情報を出力して、上記のようなジョブの完了を追跡します。
Perl 5を使用することもできます。
Perl -pe '$_=lc' temp
オプション-p
は、入力の各行に対して1回指定された式を実行し、結果、つまり$_
の最終値を出力するようにPerlに指示します。 -e
は、スクリプトを含むファイルではなく、プログラムが次の引数になることを示します。 lc
は小文字に変換されます。引数がなければ、$_
で動作します。そして$_=
はそれを再び保存して、印刷されるようにします。
そのバリエーションは
Perl -ne 'print lc' temp
-n
の使用は-p
と似ていますが、$_
が最後に出力されない点が異なります。したがって、その変数に保存する代わりに、明示的な印刷ステートメントを含めています。
Sedとは対照的なPerlの利点の1つは、GNU拡張機能が必要ないことです。GNU以外の環境との互換性が必要であるが、すでにPerl asaに依存しているプロジェクトもあります。 tr
と比較すると、Perl lc
の方がロケールに対応しやすいため、詳細についてはperllocale
のマニュアルページを参照してください。
一致したパターンをキャプチャして、モディファイアと置き換えて使用する必要があります。
_sed 's/\([A-Z]\)/\L\1/g' temp
_
\(...\)
は、一致する囲んでいるテキストを「キャプチャ」します。最初のキャプチャは_\1
_に、次は_\2
_などに移動します。 。
_\L
_は、キャプチャしたパターンを小文字に変換します。大文字の_\U
_もあります。
MvGの回答に加えて、Perl 6を使用することもできます。
Perl6 -pe .=lc temp
ここで$ _は暗黙的であり、シェルによる展開から保護するために単一引用符は必要ありません($ _は特別なBashパラメーターです。以下を参照してください https://www.gnu.org/software/ bash/manual/html_node/Special-Parameters.html )