基本的なLinuxテキスト編集ツール:cut、sort、uniq、trなど
Linuxは、コマンドラインでテキストを修正するための素晴らしいシステムです。なぜなら、テキストを変更できるツールが非常に多く存在するからです。これらの多くはUnixの時代から存在しています。ここでは、すべてのLinuxユーザーが知っておくべきツールを紹介します。
カット: フィールドを選択
cut は、表形式のデータの列を取り扱い、その中の一部またはいくつかを表示できる基本的なユーティリティです。-f オプションは、1 つのフィールド、複数のフィールド、または範囲を選択します。デフォルトの区切り文字はタブですが、-d オプションを使用することで変更できます。例えば、スペースを区切り文字としてフィールド 1 と 3 を選択するには、
cut -f 1,3 -d ' 'cutは実用的ですが、以下で紹介するより良いツールがあります。awkは、表形式のプレーンテキストデータを分解するための強力なツールです。また、ホワイトスペースについても賢く、フィールドをより簡単に選択して操作できます。
ソート: ターミナルでテキストをソートする
sortコマンドは、受け取った任意のテキストをソートします。通常の方法は、数字で始まる行が最初に来て順番にソートされ、その後にアルファベットで始まる行がアルファベット順にソートされることです。これをオプションで変更することができます。"辞書順"のために-dを使用できます。
ソートは、このようなパイプラインで最も効果的に使用されます:
some_command | cut -f1 | sort -d もう一つの便利なオプションは、-i で大文字と小文字を無視し、-n で数値ソートを強制することです。他にもたくさんのオプションがマニュアルページにあります。例えば、GNU版のものがあります。
ユニーク:重複を削除
uniqはテキストから重複を削除するのに便利です。言い換えれば、それは「ユニーク」な項目を選り分けるため、その名前が付けられています。テキストをuniqに通すと、引数としてテキストファイル(例:「uniq file」)を指定するか、標準入力から実行すると、重複するエントリを省略してテキストストリームを画面に出力します。ファイルにリダイレクトしない限り。
例えば、次のようなファイルに含まれている場合:
- dog
- 猫
- リンゴ
- リンゴ
- ムース
あなたは戻ってきます:
- dog
- 猫
- リンゴ
- ムース
「りんご」という言葉は今では一度だけ登場します。
他のユーティリティと同様に、標準入出力で作業するパイプラインで使用すると、その真価を発揮します:
some_command | cut -f1 | sort -d | uniq
このコマンドをパイプラインでつなげる技術がどれほど効果的であるかは、ベル研の元Unix開発者の一人であり、有名な書籍『Cプログラミング言語』の共著者でもあるブライアン・カーニハンから見ることができます。
この1982年の動画の5:15から、彼がターミナルでこれらのユーティリティを使ってスペルチェッカーをマクガイバーする様子を見ることができます。
文字を置き換える
trは、テキスト内の個々の文字を置き換えることができるユーティリティです。再び、これはテキストストリームにおいて最も役立ちます。特定の文字、例えばaをcに置き換えたり、文字の範囲を置き換えたりすることができます。
trのデフォルト引数は、置き換えたい文字と置き換えたい内容です。
例えば、テキストストリームのすべての小文字を大文字に変換したい場合は、次のコマンドを使用します:これは、trに範囲「a」から「z」の任意の小文字の文字を取り、それを大文字の対になる文字に変更するよう指示します。シェルがtrにそれらを処理させるために、シングルクォートでパターンを囲む必要があります。そうしないと、シェルは構文エラーを返します。
小文字に変換したい場合は、順序を逆にすることができます:
tr 'A-Z' 'a-z' sed: テキストの検索と置換
より強力なテキスト置換を望むなら、sedはチェックすべきユーティリティの1つです。そのすべての機能について詳しく説明するのは難しいですが、最も一般的な使用法の1つ、正規表現を使ったテキストの検索と置換をお見せします。
正規表現は、文字単位で検索を指定できる強力なテキスト検索方法です。この例では、WindowsをLinuxに置き換えます:
sed 's/Windows/Linux/'
このコマンドは、sedに「Linux」という文字パターンを探し、それを「Windows」という表現に置き換えるよう指示しています。正規表現はLinuxで広く使用されており、grepコマンドや多くのエディタでも使われているため、Linuxユーティリティを真剣に使用する場合には欠かせません。
もう一度、コマンドをシングルクォートで囲んで、シェルではなくsedに渡されるようにしてください。
awk: 強力なパターンスキャンニング
awkは非常に強力なコマンドであり、実際にはそれ自体がプログラミング言語です。元々はその作成者であるアルフレッド・アホ、ピーター・ヴァインバーガー、そして私たちの友人ブライアン・カーニハンにちなんで名付けられました。
テキストストリームのパターンを見つけるのに適しています。例えば、ユーザーと彼らが実行しているコマンドを印刷したい場合、このパイプラインを使用します:
ps aux | awk '{print $1, 11}'これはawkにpsコマンドの出力を取得させ、1番目と11番目のフィールドを印刷するよう指示します。このセクションではawkについて扱えることは多くありませんが、どれだけ役立つかがわかります。
あなたのお気に入りのテキストエディタ:武器を選べ
最も重要なテキスト編集ツールは、あなたのテキストエディタかもしれません。皆が自分の選んだエディタに情熱を注いでいるようです。クラシックな「エディタ戦争」はEmacsとVi、またはVimの間で繰り広げられています。Linuxに本気で取り組むなら、ここで多くの時間を費やすことになるでしょう。まだ決めていないなら、いくつか試してみて、自分に合うものを見つけてください。
多くのエディタにはそれぞれ独自の機能があります。多くの場合、選択は好みに依存します。私は、Vimのviコマンドスタイルが自分の指には最も快適ですが、あなたの経験は異なるかもしれません。







