コマンドラインでテキストを扱うための13の便利なツール

Text Tool Linux Command Line Featured

GNU/Linuxディストリビューションには、テキストを処理するための多数のプログラムが含まれており、そのほとんどはGNUコアユーティリティによって提供されています。学習曲線はありますが、これらのユーティリティは正しく使用すれば非常に便利かつ効率的です。

コマンドラインユーザーが知っておくべき強力なテキスト操作ツール13種類を紹介します。

1. cat

Catはファイルを連結するために設計されましたが、最もよく単一のファイルを表示するために使用されます。引数がない場合、catはCtrl + Dが押されるまで標準入力を読み込みます(ターミナルまたはパイプを使用して他のプログラムの出力から)。標準入力は-を使用して明示的に指定することもできます。

Catにはいくつかの便利なオプションがあります。特に以下のものがあります:

  • -Aは各行の最後に「$」を印刷し、非表示文字をキャレット表記で表示します。
  • -nはすべての行に番号を付けます。
  • -bは空でない行にのみ番号を付けます。
  • -sは一連の空白行を1つの空白行に減らします。

次の例では、file1、標準入力、file3の内容を連結し、番号付けしています。

cat -n file1 - file3

Linux Text Tools Cat

2. sort

その名の通り、sortはファイルの内容をアルファベット順、数値順に並べ替えます。

Linux Text Tools Sort

3. uniq

Uniqはソートされたファイルを取り、重複行を削除します。通常、単一のコマンドでsortと組み合わせて使用されます。

Linux Text Tools Uniq

4. comm

Commは2つのソートされたファイルを行ごとに比較するために使用されます。3つの列を出力します:最初の2つの列はそれぞれ最初のファイルと2番目のファイルに固有の行を含み、3番目の列は両方のファイルに存在する行を表示します。

Linux Text Tools Comm

5. cut

Cutは特定の文字、フィールド、またはバイトに基づいて行の特定のセクションを取得するために使用されます。ファイルから読むことも、ファイルが指定されていない場合は標準入力から読むこともできます。

文字位置によるカット

-cオプションは単一の文字位置または1つ以上の範囲の文字を指定します。

例えば:

  • -c 3: 3番目の文字。
  • -c 3-5: 3番目から5番目の文字。
  • -c -5または-c 1-5: 1番目から5番目の文字。
  • -c 5-: 5番目の文字から行の終わりまで。
  • -c 3,5-7: 3番目と5番目から7番目の文字。

Linux Text Tools Cut Char

フィールドによるカット

フィールドは単一の文字から成る区切り文字によって分けられ、その区切り文字は-dオプションで指定します。-fオプションはフィールド位置または1つ以上のフィールドの範囲を選択します。

Linux Text Tools Cut Field

6. dos2unix

GNU/LinuxとUnixは通常、テキスト行を改行(LF)で終了しますが、Windowsはキャリッジリターンと改行(CRLF)を使用します。CRLFテキストをLinuxで扱う際に互換性の問題が発生する可能性がありますが、ここでdos2unixが役立ちます。これはCRLF終端をLFに変換します。

次の例では、fileコマンドを使用して、dos2unixを使用する前後のテキスト形式を確認します。

Linux Text Tools Dos2unix

7. fold

長いテキスト行を読みやすく扱いやすくするために、foldを使用して指定された幅に行を折り返すことができます。

Foldはデフォルトで指定された幅に厳密に一致し、必要に応じて単語を分割します。

fold -w30 longline.txt

Linux Text Tools Fold

単語を分割したくない場合は、-sオプションを使ってスペースで折り返すことができます。

fold -w30 -s longline.txt

Linux Text Tools Fold Spaces

8. iconv

このツールはテキストを1つのエンコーディングから別のエンコーディングに変換するためのもので、特殊なエンコーディングを扱う際に非常に便利です。

iconv -f input_encoding -t output_encoding -o output_file input_file
  • “input_encoding”は変換元のエンコーディングです。
  • “output_encoding”は変換先のエンコーディングです。
  • “output_file”はiconvが保存するファイル名です。
  • “input_file”はiconvが読むファイル名です。

注意: iconv -lで利用可能なエンコーディングの一覧を表示できます。

9. sed

sedは強力で柔軟なsトリームedィタで、主に文字列を見つけて置き換えるために使用されます。

以下のコマンドは指定されたファイル(または標準入力)から読み込み、正規表現パターンに一致するテキスト部分を置き換え文字列に置き換えて結果をターミナルに出力します。

sed s/pattern/replacement/g filename

元のファイルを変更する場合は、-iフラグを使用します。

Linux Text Tools Sed

10. wc

wcユーティリティは、ファイル内のバイト数、文字数、単語数、または行数を印刷します。

Linux Text Tools Wc

11. split

splitを使用して、ファイルを行数、サイズ、または特定のファイル数で小さなファイルに分割できます。

行数による分割

split -l num_lines input_file output_prefix

Linux Text Tools Split Lines

バイトによる分割

split -b bytes input_file output_prefix

Linux Text Tools Split Bytes

特定のファイル数への分割

split -n num_files input_file output_prefix

12. tac

Tacはcatの逆で、正確にその通りです:ファイルを行を逆順で表示します。

Linux Text Tools Tac

13. tr

trツールは文字のセットを変換または削除するために使用されます。

文字のセットは通常、文字列または文字の範囲です。たとえば:

  • “A-Z”: すべての大文字
  • “a-z0-9”: 小文字と数字
  • “\n[:punct:]”: 改行と句読点キャラクター

詳細についてはtrのマニュアルページを参照してください。

1つのセットを別のセットに変換するには、次の構文を使用します:

tr SET1 SET2

たとえば、小文字をその大文字に置き換えるには、次のようにします:

tr "a-z" "A-Z"

Linux Text Tools Tr

文字のセットを削除するには、-dフラグを使用します。

tr -d SET

文字のセットの補集合(すなわち、そのセット以外のすべて)を削除するには、-dcを使用します。

tr -dc SET

結論

Linuxコマンドラインについては学ぶことがたくさんあります。上記のコマンドが、コマンドラインでテキストをより良く扱う手助けになることを願っています。