
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