【发布时间】:2022-11-10 20:05:56
【问题描述】:
我想从 url 列表中删除域。 url 列表可以包含随机 url 数据示例:
hqtechvietnam.com/bcm943602cs-hackintosh-meedf/
hqxbcialyc.servequake.com
hqzjz7fncd.com
hraparak.org
hrcrossing.com
hrgenius-uk.com
hrms.prodigygroupindia.com
hrome-updater.ru
hrome-update.ru
hrowedinizoin.ru
hrydc.org
hsadjy30bjtnd.servecounterstrike.com
hsa.ht
HSBC Invest Direct Ltd
hs-fileserver.info
hslvizag.in
hssubnsx.xyz
htaminorfault.xyz
htempurl.com
http://185.102.122[]2/rrtn/Spencer crypt.exe
http://23.95.200195/image/images.exe
我目前正在使用下面的 shell 脚本对数据进行排序
#PATTERN
URL_MATCH="(http|https|hxxp|hxxps)://[a-zA-Z0-9./?=_%:-]*"
DOMAIN_MATCH="^[a-zA-Z0-9]+([-.]?[a-zA-Z0-9]+)*\.[a-zA-Z]+$"
IP_MATCH="[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
CHK1 () {
echo "Initiating Check process #1" |& GET_LOG
while read -r DOMAINLIST;
do
if grep -oqE "${IP_MATCH}" <<< "${DOMAINLIST}"
then
echo "${DOMAINLIST}" | grep -oE "${IP_MATCH}" >> "${IPOUT}"
elif grep -oqE "${URL_MATCH}" <<< "${DOMAINLIST}"
then
echo "${DOMAINLIST}" | awk -F \/ '{l=split($3,a,"."); print (a[l-1]=="com"?a[l-2] OFS:X) a[l-1] OFS a[l]}' OFS="." >> "${URLOUT}"
elif grep -oqE "${DOMAIN_MATCH}" <<< "${DOMAINLIST}"
then
echo "${DOMAINLIST}" | sed 's/.*\.\(\w*\.\w*\)/\1/' >> "${DOMAINOUT}"
else
echo "${DOMAINLIST}" >> "${ERROROUT}"
fi
done < "${INFILE}"
}
上面的代码目前可以正常工作,下面是结果
URLOUT FILE:
hqzjz7fncd.com
hraparak.org
hrcrossing.com
hrgenius-uk.com
hrome-updater.ru
hrome-update.ru
hrowedinizoin.ru
hrydc.org
hsa.ht
hs-fileserver.info
hslvizag.in
hssubnsx.xyz
htaminorfault.xyz
htempurl.com
prodigygroupindia.com
servecounterstrike.com
servequake.com
ERROUT FILE:
hqtechvietnam.com/bcm943602cs-hackintosh-meedf/
HSBC Invest Direct Ltd
102.122[]2
但是如果 url 列表中包含诸如
google.co.uk
example.co.in
https://example.co.au/file1
http://example.co.au/file1
它只是给了我
co.uk
co.in
而且我要
google.co.uk
example.co.uk
example.co.au
此外,如果 url 是
mail.google.com
example.com.uk
预期输出应该是
google.com
example.com.uk
【问题讨论】:
-
请更新问题以显示您的第一个 20 多个 URL 列表的预期输出
标签: bash