tr(翻訳)とsedとawkの主な違い

tr(翻訳)とsedとawkの主な違い

AFAICsedawkAFAICはどちらも、ユーザーが非常によく似た結果を得るために使用できる汎用テキスト処理ユーティリティですが、構文は若干異なります。

両方を使用すると、ユーザーはファイルの内容を追加、交換/翻訳、および削除できます。

これら2つのプレーンテキスト処理ユーティリティとtrテキスト処理ユーティリティの主な違いは何ですか?

私が想定している機能は両方trに含まれているので、特定のコンテキストで範囲が狭くなりましたsedawk変えるある文字列は別の文字列にリンクされていますが、ここで私が正しいかどうかはわかりません。翻訳するそれは別のものを提供します。

答え1

はい、tr銀と比較して「簡単な」ツールで、簡単に模倣できます。awksedawksed最大デフォルトの動作ですが、単一の項目があるため、「組み込み」ではなく、組み込まれていませんsedawktr正確にすべきことをすべて実行してくださいtr

tr文字列以外の文字で作業し、ある文字セットを別の文字セットに変換します(tr 'A-Z' 'a-z'小文字の入力など)。その名前は「翻訳する」または「翻訳する」の略語です。

複数の同じ連続文字を削除する機能など、いくつかの素晴らしい機能がありますが、単一のsed式で実装するのはやや面倒です。

例えば、

tr -s '\n'

入力のすべての連続改行文字を単一の改行文字に圧縮します。

また、ユーティリティtrは行の長さに関係なく、sed操作を実行する前にメモリ内の行全体を読み取ろうとします(つまり、awk処理する前にレコード全体を読み取ろうとします)。これはいくつかの劣化の場合に当てはまります。問題 すべてのデータは、数ギガバイトの長さの「ワイヤ」にあります。

これら3つのツールを概説すると、次のようになります。

  • tr役割に適用されます(変更または削除)。
  • sed行に作用します(単語や行の他の部分を変更するか、行を挿入または削除します)。
  • awkフィールド(デフォルトでは、1行にスペースで区切られたフィールドですが、FS設定に変更できますRS)があるレコードに適用されます。

答え2

sedyコマンドがありますこれは次のようになります。tr:

ワイ/文字列1/文字列2/

すべての文字項目を置き換える文字列1その文字と一緒に文字列2

$ echo 'a big cat' | sed -e 'y/abc/def/'
d eig fdt

y文字範囲a-zまたはカテゴリはサポートされていません。[:alpha:] tr良い-c、また補完的なモジュールとして合計ではありません-C。削除()は、連続した行を単一の文字()に置き換えるのと同じように-d使用できます。全体的に基本的にライン指向です。時には長いスクリプトを書くときに役に立つかもしれませんが、それがすべてであれば、おそらくもっとうまくいくでしょう。s//-ssedysedtr

awktr一度に1文字ずつ変更できますが、基本機能と同等の機能はありません。 awk言語は非常に一般的であり、十分な動機があれば、必要な変換を達成するのに十分な強力なループと条件文を書くことができます。あなたがもう少しやる気になれば、あなたもsedこれを行うことができます。これらのツールは、いかなる意味でも実際には同じではありません。

答え3

$ echo ooops not good | tr oops nice
iice nit giid
$  echo oops not good | sed 's/oops/nice/'
nice not good
trは単語単位ではなく文字単位に翻訳するため、正確な順序を持つ文字だけでなく、その文字も変更します。

関連情報