
ログファイルを、時間で検索するシェルスクリプトを作成したいと考えています。
変数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で質問しましょう!
似たような質問が見つかりました
- UNIX・Linux bashでブランク(空白)を検索文字列として指定する方法 1 2022/04/13 22:29
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Java Java 南京錠 2 2023/02/04 11:46
- PHP カラーミーショップのSmartyでの文字列抜き出し 2 2022/05/06 11:51
- その他(プログラミング・Web制作) test([)コマンドによる条件判定 2 2022/08/10 12:28
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) エクセルにおいてセル内の文字を出来るだけ大きく表示する方法を教えてください。 4 2022/07/30 08:08
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Linux環境 grepで改行コード(CR...
-
grepで日付指定してlogを取り出...
-
grepでの抽出箇所のみ置換して...
-
awkとsedですが、これが何をし...
-
正規表現の初心者です
-
フィールドでgrepみたいなこと
-
grepで全角文字の行を抽出
-
カンマ区切りの列の置換を行い...
-
行頭と行末に文字追加
-
sedコマンドで範囲指定しての部...
-
Dirコマンドでフォルダ内ファイ...
-
SONYの音楽ソフト「x-アプリ」...
-
batである文字列内に特定の文字...
-
bashでシングルクォート内の変...
-
killコマンド実行時のメッセー...
-
TOPコマンドで表示するCPU使用...
-
IPアドレスだとPingが通るのに...
-
UNIX コマンドにおける # や円...
-
AIXでの文字コード、改行コード...
-
シェルスクリプトでエラーが出ます
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Linux環境 grepで改行コード(CR...
-
grepで日付指定してlogを取り出...
-
grepで全角文字の行を抽出
-
grepでの日本語検索
-
grepで検索文字列が完全一致し...
-
grepでの抽出箇所のみ置換して...
-
sedコマンドで範囲指定しての部...
-
特定文字列を除外する方法(gre...
-
awkを用いて、特定の文字を含む...
-
LINUXで半角の英数字以外の文字...
-
sed で \\ を含む文字列に置換
-
ファイルをある文字列で分割し...
-
grepで変数が使えない
-
コマンドの出力結果をn行おきに...
-
シェルスクリプトの記述について
-
sedによる置換 置換ができない。
-
awkのファイル出力について
-
awkコマンドについて
-
行頭と行末に文字追加
-
表示桁数をそろえた文字列を変...
おすすめ情報