小文字と大文字の内容を含むtempファイルがあります。
入力
tempファイルの内容:
hi Jigar GANDHI jiga
すべての上部を下部に変換したい 。
コマンド
次のコマンドを試しました:
sed -e "s/[A-Z]/[a-z]/g" temp
出力が間違っていました。
出力
次のようにします:
hi jigar gandhi jiga
代替部分に必要なものsed?
コメント
- UTF-8 txtファイルをbashですべて大文字に変換するにはどうすればよいですか?
回答
入力にASCII文字のみが含まれている場合は、次のようにtrを使用できます。
または(覚えにくく、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
コメント
-
\LはGNU拡張機能であることに注意してください。 -
\Lはこれまでのところうまく機能しています。 GNU拡張機能 - @JigarGandhiを作成しようとしている点を強調してください。
sedはUnixコマンドです。システムが異なれば、動作も異なるさまざまなバリアントがあります。 d機能。ありがたいことに、最近では、'が最も準拠している標準があるため、すべてに共通する最小限の機能セットを信頼できます。\Lはその中にはなく、GNUsedによって導入されました(標準のex/vi)であり、通常、他の実装では使用できません。 - GNUなどの一部の
tr実装に注意してください。trマルチバイトロケールでは正しく機能しません(最近はほとんどがecho STÉPHANE | tr '[:upper:]' '[:lower:]'<を試してください' / div>など)。 GNUシステムでは、sedバリアントまたはawk'の
。
sed 's/.*/\L&/g' < input。一致した部分文字列への\1参照は、wurtleのように括弧付きの部分文字列を指定しない限り、機能しません'。ただし、'は、図に示すように、&を使用して一致全体を表す方が少しクリーンです。