gpt4 book ai didi

linux - grep 变量和空格的问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:25:36 25 4
gpt4 key购买 nike

我正在尝试让这段代码正常工作。我挂断了第二个带有变量 $pkgname 的管道 grep。我无法找到一种方法让它正确读取变量,要么我没有输出,要么因为代码是当前编写的,我得到 grep: illegal byte sequence。如果我在变量中放置没有空格的文本,它就可以工作,或者我输入文本作为 grep 语句的一部分,它就可以工作。

 #!/bin/bash
counter=0
results2=Executing\ SSH\ MOTD\ banner
pkgname=SSH\ MOTD\ banner
until [ $counter = 1 ]
do
echo $counter
echo $pkgname
echo $results2
result=$(grep "$(date +"%b %d")" /var/log/test.log | grep “$pkgname” | cut -d':' -f 4 | sed 's/^ *//g')
echo $result
if [ “$result” == “$results2” ]; then
counter=1
fi
done
echo finished

所以我正在寻找的日志文件行看起来像这样。

Tue Jun 28 10:58:57 machinename process: Executing SSH MOTD banner

最佳答案

改为

pkgname="SSH MOTD banner" # Here use quotes to avoid using \

作为[ @jack ]在此 [ comment ] 中正确指出,您需要中性引号 " 才能扩展变量。也就是说您可以将正则表达式简化为以下

pkgname="SSH MOTD banner"
d=$(date +"%b %d")
result="$(awk -v FS=":" -v d="$d" -v pkg="$pkg_name" '{if($0 ~ date && $0 ~ pkg){sub(/^ */,"",$4);print $4}}' /var/log/test.log)"

关于linux - grep 变量和空格的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44812450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com