誰かがテキストファイル内のすべての小文字を大文字に変換して新しいファイルとして保存する方法を説明しますか?私のファイルはNewFile.txtと呼ばれ、500行の任意の文字が含まれています。
ベストアンサー1
POSIX ツールボックスには次のものがあります。
<input.txt tr '[:lower:]' '[:upper:]' >output.txt
しかし、参考にしてくださいGNU 実装では、シングルバイト文字でのみ機能します。;たとえば、UTF-8文字セットを使用するロケールでは、発音区別記号を持たないabcdefghijklmnopqrstuvwxyz文字のみを使用できます。
<input.txt awk '{print toupper($0)}' >output.txt
また、POSIXで使用できますawk
。
<input.txt dd conv=ucase >output.txt
POSIXもありますが、ASCII以外の文字を翻訳する実装はあまりありません。
<input.txt sed 's/.*/\U&/g' > output.txt
GNUで動作しますsed
が、sed
GNUでのみ動作します(\U
標準ではありません)。
そしてperl
:
<input.txt perl -Mopen=locale -pe '$_=uc' >output.txt
それはロケールのtoupper
規則を使用しないので、次の単語に適しています。オフィス(ffi
1文字を3文字に変換するFFI
1)。
uconv
、ICUプロジェクトのプロジェクトは、さまざまな国際コーナーケースを非常にうまく処理する必要があり、入力/出力がUTF-8(またはuconv --default-code
返されるすべての項目)でエンコードされていると仮定します。他の入出力エンコーディングを指定するには、/および-f
/--from-code
オプション-t
を--to-code
参照してください。
<input.txt uconv -x upper >output.txt
vim
エディタでファイルの最初の文字にある場合(gg
行く)、gUG
ファイルの最後まですべての文字を大文字に変換するように入力します。その後、:saveas output.txt
出力ファイルに保存します。
またはanyまたはex
実装vi
を使用してください(すべての実装が非ASCII文字を処理するわけではありませんが):(:%s/.*/\U&/
そして:w output.txt
編集されたファイルを作成し、output.txt
現在:q!
変更されている入力ファイルを保存せずに終了します)。
シェルを含むzsh
:
zmodload zsh/mapfile
mapfile[output.txt]=${(U)mapfile[input.txt]}
# or (csh-style):
mapfile[output.txt]=$mapfile[input.txt]:u
まだわからない場合に備えて、大文字を小文字に変換するには:
tr
: 交換[:lower:]
金額[:upper:]
awk
:toupper
に変更tolower
dd
:ucase
に変更lcase
- GNU
sed
//ex
:次へvi
変更\U
\L
perl
:uc
に変更lc
。uconv
:upper
に変更lower
vim
:(これはトリックの1つです)gUG
に変更します。guG
zsh
:、、に(U)
変更します。(L)
:u
:l
1 C / POSIX toupper()
/ towupper()
APIは一度に1文字だけを別の文字に変換できるため、テキストの大文字と小文字を変更する方法には制限があります。バラよりhttps://unicode-org.github.io/icu/userguide/icu/posix.html#case-mappingsこれについてそしてもっと。