Первый grep:
cat -n 1 log* | grep -B95 -A1 "Response-Code: 412" | grep -B6 -A3 -E '\"MACAddress\": \"\"' >> mylog
У меня есть текстовый файл (результат первого grep) с данными:
5283089 ID: 9463885
5283090 Address: https://xxx.xxx.xxx.xxx:xxxx/login/follow
5283091 Encoding: UTF-8
5283092 Http-Method: POST
5283093 Content-Type: application/json
5283094 Headers: {Accept=[*/*], Content-Length=[423], content-type=[application/json], Cookie=[JSESSIONID=wyGHZLNLZdph0m1ZWb1SgRNpFNCJVVQlvmxnpHPqS!-1008111251!1506299176689], Host=[xxx.xxx.xxx.xxx:xxxx]}
5283095 Payload: { "device":{ "startDate": "1392246000000", "MACAddress": "", "status": "true", "deviceName": "Still", "IPAddress": "xxx.xxx.xxx.xxx", "dhcp": "true", "uuid":"" } }
5283096 -------------------------------------- [189132]
5283097 2017-09-25 03:26:17,099 [DEBUG][Mapper] 0002-1401: Follow required. [189132]
5283098 Exception: 0002-1401: Follow required.
Через некоторое время я сделаю второй grep, и у меня будут строки с теми же данными и новыми данными. Мне нужно проверить старые данные в моем файле и не записывать эти данные, а записывать новые данные в файл. Я попытался:
readarray -t LINE <<< "$(cat -n 1 log* | grep -B95 -A1 "Response-Code: 412" | grep -B6 -A3 -E '\"MACAddress\": \"\"')"
for ((a=0; a<${#LINE[*]}; a++))
do
cat mylog | grep grep "${LINE[$a]}"
res=$?
if ((res>0))
then
echo "Line present in the mylog file"
else
echo "${LINE[$a]}" >> mylog
fi
done
, но у меня есть некоторые проблемы с проверкой dat - я не могу grep некоторые «LINE» ([5], [7], [8]) Возможно, вы знаете, почему Я не могу grep эти данные?