我正在嘗試編寫一個簡單的bash腳本,該腳本將grep爲二進制文件中的字符串,然後使用正則表達式提取所有十六進制字符串。但是,我似乎無法找到一種方法,可以將來自正則表達式的輸出存儲在一個數組中,我可以稍後使用它將其所有元素從十六進制轉換爲ASCII值。將正則表達式的匹配結果存儲在數組中
str=$(grep -ra "Html.Exploit.CVE.2015_6073" /var/lib);
hexstr=$([[ $STR =~ (?<=^|[*{};])[A-Fa-f0-9]+(?=$|[*;{}]) ]]);
converted=$(xxd -r -p <<< "$HEXSTR");
echo -e "\e[92m$converted \e[0m"
我可以做一個if
聲明以while
循環中它會創建一個十六進制字符串(從正則表達式返回)作爲元素的數組?
UPDATE
當前代碼:
#!/bin/bash
str=$(grep -ra "Html.Exploit.CVE.2015_6073" /var/lib);
if [[ $str =~ (?<=^|[*{};])[A-Fa-f0-9]+(?=$|[*;{}]) ]]; then
Array+="$str"
fi
for hex in "${Array[@]}"; do
echo $hex
done
爲了將它添加到數組中,您必須像'Arrary + =(「$ str」)''一樣在'$ str'周圍有括號。 – jkdba
'=〜'不支持lookaround正則表達式 – anubhava