我想在“priority =”的值大于1000的文件中grep“priority =”。
我试过这样的事情:
if grep -q "priority=[ >1000 ]" file; then
echo "[!] Unnatural priority"
fi
e.g。 <intent-filter android:priority="2147483647">
答案 0 :(得分:4)
尝试:
(( $(grep -oP 'priority\s*=\s*"\s*\K(\d+)' file) > 1000 )) && echo "warning"
需要一个具有-P
perl正则表达式支持的相对较新的grep。的:
\K
(后面的变量看似)匹配,但从结果中杀死它之前的所有内容,因此它只打印捕获组(\d+)
当然,你也可以使用perl,
perl -nlE 'say $1 if /priority="\K(\d+)/' <<< '<intent-filter android:priority="2147483647">'
打印
2147483647
或sed
sed 's/.*priority="\([0-9][0-9]*\).*/\1/' <<< '<intent-filter android:priority="2147483647">'
答案 1 :(得分:4)
你可以使用这个Perl单行:
perl -lne 'print "[!] Unnatural priority" if /priority="(\d+)"/ && $1 > 1000'
捕获priority =“X”中的数字,如果值大于1000,则打印警告。
如果您愿意,也可以在原生bash中执行此操作:
while read -r line; do
if [[ $line =~ priority=\"([[:digit:]]+)\" ]] && (( BASH_REMATCH[1] > 1000 )); then
echo "[!] Unnatural priority"
fi
done < file
答案 2 :(得分:3)
您可以尝试使用正则表达式来要求类似于大于一千的数字的模式:
grep -q --regexp="priority=\"[1-9][0-9]\{3,\}\"" file
这应该与priority=
后跟至少四位且第一位数字非零的情况相匹配。
答案 3 :(得分:1)
Label1.BackColor = sheets("sheet1").cells(2,2).DisplayFormat.Interior.Color
会让这一切变得简单:
awk
假设当然每行只有一个$ cat file | awk -F '=' '$2 > 1000 {print $0}'
。
答案 4 :(得分:0)
我遇到了类似的问题 - 检查需要为“2.32 版”或更高版本的版本字符串。我的 grep(嵌入式 BusyBox)不支持 -P 选项或 {n},所以使用基本的 grep:
grep "Version 2\.3[2-9]\|2\.[4-9][0-9]\|[3-9]\.[0-9][0-9]"