我需要的
我有一个现有的脚本,它提取域的端口信息并将其存储到一个名为portscan.txt
. 例子:
portscan.txt
文件:
somedomain.com:80
somedomain.com:443
我只想在满足某些条件时删除信息。这些条件包括:
- 包含域的文件应该有 2 行或更少的行
- 端口只能是 80 或 443(即,如果文件中存在 8080、8443 或任何其他端口,我不想删除该文件)。
注意:所以基本上,上面提供的示例文件应该被删除,但如果有 2 行,我不想删除该文件,但端口是 8080 或 8443(或任何其他端口) 示例如下:
somedomain.com:8443
somedomain.com:443
这不应该被删除。
我试过的
我尝试编写脚本,这就是我所拥有的:
#!/bin/bash
lines=$(cat portscan.txt | wc -l)
ports=$(cat portscan.txt | grep -Pv '(^|[^0-9])(80|443)($|[^0-9])')
if [[ $lines < 3 ]] && [[ $ports != 80 ]]; then
if [[ $ports != 443 ]]; then
echo "I need to delete this"
fi
else
echo "I will NOT delete this..."
fi
这是脚本的第二次渲染,我尝试嵌套if语句,因为我无法执行这样的条件:
如果portscan.txt少于两行且端口不是80或443
我还尝试了一种更简单的方式,如下所示:
#!/bin/bash
lines=$(cat portscan.txt | wc -l)
ports=$(cat portscan.txt | grep -Pv '(^|[^0-9])(80|443)($|[^0-9])')
if [[ $lines < 3 ]] && (( $ports != 80||443 )); then
echo "I need to delete this"
else
echo "I will NOT delete this..."
fi
我已经尝试过,((
因为我读到这更好地与算术函数一起使用——这是我认为我需要的,但当它应该像这样时,我对条件参数并不那么精通:“这个和那个或那个”。
希望这是有道理的,任何帮助将不胜感激!