Shell-Script

如何在 sed 命令中呼叫變數

  • December 30, 2017

我想計算過去 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 命令中呼叫 my $nowdate,變數。$pastdate

您在聲明中引用了太多引號。它應該像這樣工作得很好:

sed -rne "/$pastdate/,/$nowdate/p" /data/recvdmsg.log | wc -l

或者如果您仍然想使用單引號,可以這樣:

sed -rne '/'$pastdate'/,/'$nowdate'/p' /data/recvdmsg.log | wc -l

請記住,如果/變數中有字元,它將破壞sed表達式。


如果您想進一步過濾這些記錄,您可以在 Sed 中執行此操作,而不是在末尾添加 grep:

sed -rne "/$pastdate/,/$nowdate/ { /pattern-to-grep-for/p; }" /data/recvdmsg.log

(空格是為了便於閱讀;它們不是強制性的。)

引用自:https://unix.stackexchange.com/questions/413611