• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:表示桁数をそろえた文字列を変数に格納したい)

表示桁数をそろえた文字列の格納方法

このQ&Aのポイント
  • ログファイルを時間で検索するシェルスクリプトを作成する際、変数に表示桁数をそろえた文字列を格納したい場合、printfの%02dを使用すると正しく生成することができます。
  • 例えば、01と表示されるように、変数hの値に%02dを指定して、printfでフォーマットすることができます。
  • 具体的には、searchStr="Jun 23 $(printf "%02d" $h):$(printf "%02d" $m)"のように記述します。これにより、変数hやmの値が1桁の場合でも、2桁の表示を保つことができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

> searchStr="Jun 23 `printf "%02d" $h` :"  なりましたけど? このままだと、$mの方は%02dが適用されませんが。 > for((h=0;h<24;h++)) > for ((m=0;m<59;m++)) これだと、毎時59分は検索しませんが、それで正しいですか? > cat ログファイル | grep searchStr #ここで検索するための文字列を作成したい。 単にログファイルから検索するだけなら、catしなくても grep "$searchStr" ログファイル で十分。 > echo $searchStr #文字列確認 等と時間毎の処理が入っていますが、これが必要無いなら、正規表現を使ってまとめて検索するという方法もあります。 > cat ログファイル | grep searchStr #ここで検索するための文字列を作成したい。

kureakai
質問者

お礼

>なりましたけど? このままだと、$mの方は%02dが適用されませんが。 再度動かしてみたら、できました。 なぜだめだったんだろう…。 ありがとうございます。 他の指摘いただいた部分は、自分で直しておきました。 御教示、ありがとうございました。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

>(searchStr="Jun 23 `printf "%02d" $h` :" 等してみましたが、00が入っただけで、01とかになりませんでした。) 確認の仕方が悪いのでは?$mについても同様にすれば、それで合ってます。 普通は、こうシンプルに書きますが、まあ、どっちでも同じ結果で、うまくいきます。 searchStr=`printf "Jun 23 %02d:%02d" $h $m`

kureakai
質問者

お礼

>(searchStr="Jun 23 `printf "%02d" $h` :" 等してみましたが、00が入っただけで、01とかになりませんでした。) 確かに動きました…。 なぜか原因不明でしたが。 >searchStr=`printf "Jun 23 %02d:%02d" $h $m` こちらのほうも参考にさせて頂きます。 御教示ありがとうございました。

  • mkt23456
  • ベストアンサー率33% (21/63)
回答No.2

自分もスマートに書けないですが、 a=2 c="00"$a echo c$ echo ${c:(-2):2} あたりでヒントになりませんか?

kureakai
質問者

お礼

サンプルありがとうございます。 参考にさせて頂きたいと思います。 御教示ありがとうございました。

関連するQ&A