過去1時間のレコード数を取得したいです。
私のコードは次のとおりです
nowdate=$(date +'%H:%M:')
pastdate=$(date +'%H:%M:' -d "1 hour ago")
echo $nowdate
echo $pastdate
sed -rne '/"'"$pastdate"'"/,/"'"$nowdate"'"/p' /data/recvdmsg.log | wc -l
私が得た結果は、
12:47:
11:47:
0
また、これは次のように事前定義された値でうまく機能します。
sed -rne '/00:00:/,/00:59:/p' /data/recvdmsg.log | wc -l
sedコマンドで私の変数を呼び出したいです$nowdate
。$pastdate
答え1
声明にあまりにも多くの内容を引用しました。次のようにうまく機能します。
sed -rne "/$pastdate/,/$nowdate/p" /data/recvdmsg.log | wc -l
または、まだ一重引用符を使用したい場合は、次のようにします。
sed -rne '/'$pastdate'/,/'$nowdate'/p' /data/recvdmsg.log | wc -l
/
変数に文字があると式がsed
中断されることを覚えておいてください。
これらのレコードをさらにフィルタリングするには、最後にgrepを追加するのではなく、Sedでこれを実行できます。
sed -rne "/$pastdate/,/$nowdate/ { /pattern-to-grep-for/p; }" /data/recvdmsg.log
(スペースは読みやすくするためのものでは必須ではありません。)
答え2
これは具体的な回答ではなく一般的なコメントですが、OPが拡張機能で問題となる根本的な問題を解決するのに役立つ可能性があるため、回答として投稿します。
拡張に依存する引数を作成し、拡張された引数がどのようなものになるのか気になる場合は、ここに行きますecho
。
出力を見ると
echo '/"'"$pastdate"'"/,/"'"$nowdate"'"/p'
/"12:36:"/,/"13:36:"/p
これにより、引用文に問題があることがわかります。