tr
を使った文字の圧縮
tr
コマンドのもう 1 つの便利な機能は、繰り返される文字を「圧縮」する能力です。つまり、同じ文字の連続した出現を 1 つのインスタンスに置き換えます。この機能は、過度の空白やその他の繰り返される文字を含むテキストを扱う際に特に有用です。
tr
の圧縮オプション
tr
コマンドを使って繰り返される文字を圧縮するには、-s
オプションを使用し、その後に圧縮したい文字のセットを指定します。
tr -s SET1
ここで、SET1
は圧縮したい文字のセットです。
過度の空白を含むサンプルテキストファイルの作成
練習に使える、過度の空白を含むサンプルファイルを作成しましょう。
echo 'Error: Too much whitespace.' > ~/project/whitespace.txt
このコマンドは、/home/labex/project
ディレクトリに、複数の連続した空白を含むテキストが記載された whitespace.txt
という名前のファイルを作成します。
テキスト内の空白を圧縮する
では、-s
オプションを使って tr
コマンドを使用し、複数の空白を 1 つの空白に圧縮しましょう。
tr -s ' ' < ~/project/whitespace.txt
このコマンドを実行すると、次の出力が表示されるはずです。
Error: Too much whitespace.
単語間の複数の空白が 1 つの空白に減らされ、テキストがより読みやすくなったことに注意してください。
コマンドの理解
何が起こったかを分解してみましょう。
tr -s ' '
は、コマンドに対して空白文字の繰り返される出現を 1 つの空白に圧縮するよう指示します。
<
記号は、~/project/whitespace.txt
の内容を tr
コマンドの入力としてリダイレクトします。
- 結果はターミナルに表示されますが、ファイルには保存されません。
出力を新しいファイルに保存する
空白が圧縮されたテキストを新しいファイルに保存したい場合は、出力リダイレクトを使用できます。
tr -s ' ' < ~/project/whitespace.txt > ~/project/clean_whitespace.txt
新しいファイルの内容を確認するには、cat
コマンドを使用します。
cat ~/project/clean_whitespace.txt
次のように表示されるはずです。
Error: Too much whitespace.
tr
の操作を組み合わせる
tr
コマンドでは、操作を組み合わせることができます。たとえば、1 つのコマンドで文字を変換し、同時に圧縮することができます。
tr 'a-z' 'A-Z' -s ' ' < ~/project/whitespace.txt
このコマンドは、すべての小文字を大文字に変換し、同時に複数の空白を 1 つの空白に圧縮します。
より複雑な例の作成
練習のために、より複雑な例を作成しましょう。
echo 'log entry: error code 404 not found' > ~/project/complex.txt
では、tr
を使用してすべての文字を大文字に変換し、空白を圧縮しましょう。
tr 'a-z' 'A-Z' -s ' ' < ~/project/complex.txt > ~/project/processed_complex.txt
結果を確認するには、次のコマンドを実行します。
cat ~/project/processed_complex.txt
次のように表示されるはずです。
LOG ENTRY: ERROR CODE 404 NOT FOUND
これで、tr
コマンドを使ってテキスト内の繰り返される文字を圧縮する方法を学びました。これは、以前に学んだ変換と削除の機能と組み合わせることで、Linux でのテキスト操作に強力なツールキットを提供します。