sed コマンドで変数を呼び出す方法

sed コマンドで変数を呼び出す方法

過去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

(スペースは読みやすくするためのものでは必須ではありません。)

おすすめ記事