Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Trフィルタファイルコマンド

Trフィルタファイルコマンド

  

trはsedの(非常に)単純化された変形形と考えることができます。それは別の文字を1つの文字に置き換えることも、一部の文字を完全に削除することもできます。重複した文字を削除するのにも使えます。これがすべてのtrができることです。

では、sedの代わりにtrを使用するのはなぜですか。もちろんそれは物事を単純にすることです。たとえば、表示されているすべての文字を「z」という単語で置き換える場合は、tr azを使用できます。特に、このコマンドはsed -es /a /z /gよりも単純です。スクリプトで使用すると、引用符は非常に混乱します。さらに、trを使用すると、厄介な正規表現を書くことを避けることができます。

trの使い方は簡単です。前の段落で示した記号表記を使って、現れる他のすべての文字を1つの文字に置き換えます。複数の文字を置き換える必要がある場合は、次のような表記法を使用します。tr abc xyzこれは、表示されているすべての文字を文字 "x"に置き換え、a'すべての文字を文字 "y'"に置き換えます。; b'、すべての文字「c'を文字' z'に置き換えます。これら2つのグループにリストされている文字数は、等しい必要はありません。

文字の範囲も指定できます。たとえば、tr a-z A-Zでは、すべての小文字が対応する大文字に置き換えられます(たとえば、<;禁煙です' NO SMOKING'に変換されます)。この特別なテクニックは、viエディタで編集中のテキストの一部を強調したいときに便利です。 Escキーを押してから:を押し、次に2,4!tr 'a-z' 'A-Z'と入力してReturnキーを押します。 2行目から4行目までの文字は大文字に変換されます。

さらに、誰かがあなたにMac OSまたはDOS / Windows
マシン上で作成されたテキストファイルをあなたに送るとき、あなたはtrが非常に有用であることがわかるでしょう。 UNIXの改行を使用して行末形式を示すためにファイルを保存しない場合は、そのようなファイルをネイティブのUNIX形式に変換する必要があります。そうしないと、一部のコマンドユーティリティで正しく処理されません。 Mac OSの終わりはキャリッジリターン文字で終わります、そして多くのテキスト処理ツールはそのようなファイルを単一行として扱います。この問題を解決するには、次のヒントを参考にしてください。

Mac - > UNIX:tr '\\ r' '\\ n'< macfile> unixfile UNIX - > Mac:tr '\\ n' '\\ r '< unixfile> macfile Microsoft DOS /Windowsの規則で、テキストの各行は復帰文字とそれに続く改行文字で終わります。この問題を解決するには、次のコマンドを使用します。

DOS - > UNIX:tr -d '\\ r'< dosfile> unixfile UNIX - > DOS:この場合は、awkを使用する必要があります。 trは2文字を挿入して1文字を置き換えることはできないからです。 awkコマンドはawk '{print $ 0 "\\ r"}'< unixfile> dosfileです。また、テキストファイルを簡単に仕上げる必要がある場合(システムを削除するためにtr -d '\\ t'を使用するなど)シンボルの場合は、余分なスペースを削除するにはtr -s ''を使用し、別々の行を1行にまとめるにはtr -d '\\ n'を使用します)、trを使用する必要があります。繰り返しになりますが、viではこれらすべてのコマンドを使用できますが、覚えておいてください。1、$!のように、処理したい行範囲と感嘆符(!)を追加してください($)tr -d '\\ t'(ドル記号)最後の行に表示されています。

Copyright © Windowsの知識 All Rights Reserved