
ログファイルを、時間で検索するシェルスクリプトを作成したいと考えています。
変数searchStr に、ログから検索対象となる時間をループで生成したい。
例:「Jun 23 00:23」(※この文字列を作成したい。)
以下スクリプト作成しましたが
結果として、変数h、mが、1~9の時、searchStr は「Jun 23 0:23」や「Jun 23 0:3」になります。
時間と分の桁数が、変数が1ケタの場合、1→01としたい。
printfの%2dとか指定し、変数に入れてみたりしたのですが上手く文字列を生成することが出来ないのです。
(searchStr="Jun 23 `printf "%02d" $h` :" 等してみましたが、00が入っただけで、01とかになりませんでした。)
#!/bin/bash
for((h=0;h<24;h++))
do
for ((m=0;m<59;m++))
do
searchStr="Jun 23 "$h":"$m
echo $searchStr #文字列確認
cat ログファイル | grep searchStr #ここで検索するための文字列を作成したい。
done
done
良い解決方法がありましたら、ご教示お願いします。
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 #ここで検索するための文字列を作成したい。
>なりましたけど?
このままだと、$mの方は%02dが適用されませんが。
再度動かしてみたら、できました。
なぜだめだったんだろう…。
ありがとうございます。
他の指摘いただいた部分は、自分で直しておきました。
御教示、ありがとうございました。
No.3
- 回答日時:
>(searchStr="Jun 23 `printf "%02d" $h` :" 等してみましたが、00が入っただけで、01とかになりませんでした。
)確認の仕方が悪いのでは?$mについても同様にすれば、それで合ってます。
普通は、こうシンプルに書きますが、まあ、どっちでも同じ結果で、うまくいきます。
searchStr=`printf "Jun 23 %02d:%02d" $h $m`
>(searchStr="Jun 23 `printf "%02d" $h` :" 等してみましたが、00が入っただけで、01とかになりませんでした。)
確かに動きました…。
なぜか原因不明でしたが。
>searchStr=`printf "Jun 23 %02d:%02d" $h $m`
こちらのほうも参考にさせて頂きます。
御教示ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Linux環境 grepで改行コード(CR...
-
grepで全角文字の行を抽出
-
grepで日付指定してlogを取り出...
-
特定文字列間の文字列の抽出の...
-
表示桁数をそろえた文字列を変...
-
sedコマンドで範囲指定しての部...
-
LINUXで半角の英数字以外の文字...
-
grepで検索文字列が完全一致し...
-
Dirコマンドでフォルダ内ファイ...
-
TOPコマンドで表示するCPU使用...
-
batである文字列内に特定の文字...
-
ファイル名についている「-」と...
-
pingは正常なのにtracerouteで...
-
SONYの音楽ソフト「x-アプリ」...
-
Linux のシェルスクリプトの強...
-
エクセルの表にヘンな枠が・・・
-
スクリプトのエラー「unexpecte...
-
テキストファイルから最終行の抽出
-
topコマンドで表示されるVIRT、...
-
空きIPアドレスを探す方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Linux環境 grepで改行コード(CR...
-
grepでの抽出箇所のみ置換して...
-
grepで全角文字の行を抽出
-
grepで日付指定してlogを取り出...
-
grepで検索文字列が完全一致し...
-
bashでブランク(空白)を検索文...
-
シェルスクリプトの実行結果が...
-
sed で \\ を含む文字列に置換
-
grepでの日本語検索
-
パラメータの1つを複数行で表...
-
sedによる置換 置換ができない。
-
grepで拡張子がxlsxのファイル...
-
特定文字列間の文字列の抽出の...
-
行頭と行末に文字追加
-
zshの文字列置換機能
-
【シェルスクリプト】awkの結果...
-
正規表現の初心者です
-
awk:LinuxとWindows
-
HP-UXのメモリ搭載量を確認する...
-
unixコマンドを教えてください。
おすすめ情報