tr REPEAT修飾子を使用して文字を繰り返し文字に置き換える方法は?

tr REPEAT修飾子を使用して文字を繰り返し文字に置き換える方法は?

私はこのtrコマンドを使用して、他のコマンドの出力から折り返しをタブに置き換え、出力を列形式に合わせるために複数のタブを使用したいと思います。

10進または8進の値になるオプションがtrありますが、次のような単純な行のように動作させることはできません。[CHAR*REPEAT]REPEAT

echo "1234" | tr ['2'] ['x'*3]

以下を提供します。

1x34

私が期待するとき:

1xxx34

正しい構文は何ですか?

ベストアンサー1

「繰り返し」オプションの意味を間違って理解しているようです。

tr正しく推論したように、文字セットが翻訳に使用されます。オプションで呼び出すことができます。

ティー設定1 設定2

アイデアは、両方のセットに複数の文字を含めることができるということです。つまり、次のように言えます。

tr 'abc' 'def'

aすべてをにdbすべてをにecすべてをに置き換えますf。時には、複数の「入力」文字を同じ「出力」文字に置き換えたい場合があります。

tr 'abcdefghij' 'xxxxxxxxyz'

これは〜で、〜で、〜にa置き換えられます。 「繰り返し」機能の目的は、書くことがあまり面倒ではなく、書くことができるようにすることです。hxiyjz

tr 'abcdefghij' '[x*8]yz'

略語で。残念ながら、これはあなたが望む仕事に合わせて設計されていないことを意味します。

代わりに、あなたは試すことができますsed

$ echo "1234" | sed 's/2/xxx/g'
1xxx34

sこれにより、()のすべての項目(トレイル)がg置き換えられます。これよりも強力なので(タグ付けされた質問を確認してください。2xxxsed何が起こっているのかを概説するには、とにかく見てみることをお勧めします。

おすすめ記事