テキストファイルを小文字から大文字に変換して新しいファイルとして保存する方法

テキストファイルを小文字から大文字に変換して新しいファイルとして保存する方法

誰かがテキストファイル内のすべての小文字を大文字に変換して新しいファイルとして保存する方法を説明しますか?私のファイルは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が、sedGNUでのみ動作します(\U標準ではありません)。

そしてperl

<input.txt perl -Mopen=locale -pe '$_=uc' >output.txt

それはロケールのtoupper規則を使用しないので、次の単語に適しています。オフィス1文字を3文字に変換するFFI1)。

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:]
  • awktoupperに変更tolower
  • dducaseに変更lcase
  • GNU sed// ex:次へvi変更\U\L
  • perlucに変更lc
  • uconvupperに変更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これについてそしてもっと。

おすすめ記事