trを使って複数のグループを変更するには?

trを使って複数のグループを変更するには?

tr交換番号0-5と交換番号を使用したいですA6-9B

私はsedこれを使ってみました:

sed 's/[0-4]/</; s/[6-9]/>/' 

しかし、一度だけ動作するので、たとえば、私が書くと123A23AAA

ベストアンサー1

の場合は、各行で発生するすべての内容を置き換えるようにsed追加する必要があります。g

sed 's/[0-4]/A/g;s/[5-9]/B/g'

を使用すると、tr2つのsを接続できますtr

tr '0-4' A | tr '6-9' B

または明示的に文字変換を提供します。

tr 0123456789 AAAAABBBBB

でも:

tr 0-45-9 AAAAABBBBB

(ただし、後者は1-1マッピングがすぐに表示されないため、読みやすくはありません.)

繰り返されるBsは短縮され(tr最後の文字は必要に応じて繰り返されます)、範囲をマージできます。

tr 0123456789 AAAAAB
tr 0-9 AAAAAB

より複雑な置換の場合、コマンドを分割すると、目的をより明確にするのに役立ちます。

tr 0123456789 \
   AAAAABBBBB

あるいは、この場合、参照範囲が拡張長と一致するという事実を利用してください。

tr '0-4''5-9' \
   AAAAABBBBB

例の最初のコマンドに示すように、均等に分割するために、範囲分割が0-4と5-9であると仮定しますsed。範囲は必要に応じて調整できます。

おすすめ記事