由于变量中的转义字符,因此sed提前终止。希望awk可以做我需要的但却看不到的方法!
# Main section ==========================================╕
LASTIP=`grep -E '[0-2]{0,1}[0-9]{0,9}[0-9]{0,1}\.[0-2]{0,1}[0-9]{0,9}[0-9]{0,1}\.[0-2]{0,1}[0-9]{0,9}[0-9]{0,1}\.[0-2]{0,1}[0-9]{0,9}[0-9]{0,1}' $SRCDIR/$IPLOGFILE | tail -1|awk -F'\t' '{print$3}'`
if [ "$CURRENTIP" == "$LASTIP" ]; then
# Still using old IP===================================╕
FIRSTDETECTED=`grep $LASTIP $SRCDIR/$IPLOGFILE | tail -1|awk -F'\t' '{print$1}'`
LASTDETECTED=`grep $LASTIP $SRCDIR/$IPLOGFILE | tail -1|awk -F'\t' '{print$2}'`
OLDLINE=$(printf "$FORMAT" "$FIRSTDETECTED" "$LASTDETECTED" "$LASTIP")
AMENDEDLINE=$(printf "$FORMAT" "$FIRSTDETECTED" "$TIMESTAMP" "$LASTIP")
sed -i "s/'$OLDLINE'/'$AMENDEDLINE'/g" $SRCDIR/$IPLOGFILE
除了最后一个sed之外,这个工作正常,因为$OLDLINE
和/或$AMENDEDLINE
包含转义字符而终止。我认为我可以直接替换awk来解决这个问题,但我想的越多,我就越认为整个部分可以用awk更有效地完成 - 也许在一行awk中?麻烦的是我不知道从哪里开始。我是在欺骗自己简化它还是有办法?如果有,你可能不得不帮助我,因为我发现这些东西“扭曲了我脆弱的小脑袋”*
*由Cartman提供; P
我已经删除了该部分但是如果有帮助可以提供其余的脚本吗?
答案 0 :(得分:0)
你也许可以尝试那样
$products = Product::all()->where('id',1);
$myItems= $products->items()->get();
return view('products',compact('myItems','products'));
我认为'$ OLDLINE'和'$ AMENDEDLINE'未展开