sed代替式(インデントされたテキスト)で数量子を使用する方法は?

sed代替式(インデントされたテキスト)で数量子を使用する方法は?

私は| sed特定のコマンドの結果をインデントするために使用します(簡単な例を挙げます$ echo something)。結果の前にスペース10個を追加したいと思います。以下はうまくいきます。

$ echo something | sed 's/^/         /'
         something

| sedしかし、式に数量子を使用する方法はありますか?

私は例えば試しました。

$ echo something | sed 's/^/ {10}/'
 {10}something

しかし、明らかにこれはうまくいきません。{10}数量子として解釈されません。

バックスラッシュで中括弧を保護することも機能しません。

$ echo something | sed 's/^/ \{10\}/'
 {10}something

代替式に数量子を使用する方法はありますか?

ベストアンサー1

置換の置換がsed正規表現ではないので、これは可能ではないと思います。

別の方法は、次のように変数を生成して代替変数として使用することです。

# use printf to set as many spaces as you want
$ i=$(printf "%10s")

# use the created variable as replacement of the substitution
$ echo something | sed "s/^/$i/"
          something

おすすめ記事