SEDで先行ゼロをスペースに置き換える方法は?

SEDで先行ゼロをスペースに置き換える方法は?

SEDで先行ゼロをスペースに置き換える方法を見つけようとしています。その月の日付を取得し、一部のデータをフィルタリングするために空白に置き換えようとして画面を掻きます。

私のコードは次のとおりです。

DoM=$(date --date="-1 day" +"%d")
DoMSp=$(echo $DoM | sed "s/^0*/\ /g"); echo $DoMSp

しかし、問題は、「1」を印刷するのではなく、1〜9の日があれば、式に「\」をどれだけ入力しても「1」が印刷されることです。

$ DoMSp=$(echo $DoM | sed "s/^0*/\ /g"); echo $DoMSp
1

$ DoMSp=$(echo $DoM | sed "s/^0*/\ \ \ \ \ \ /g"); echo $DoMSp
1

ベストアンサー1

コマンドからスペースをエスケープする必要はありません。スペースを避けるには、sedコマンドに二重引用符を使用するだけです。echo噴射:

$ DoMSp=$(echo "$DoM" | sed "s/^0*/ /"); echo "$DoMSp"
 1

おすすめ記事