删除具有长TLD顶级域的行

问题描述

是否有更有效的方法来删除无效/太长的tld(顶级域)行?我对sed / awk效率不高。我想在最后一个时间段之后从文件中删除超过24个字符的行。

我写的东西行得通,但是在长列表上速度非常慢。它需要每一行,计算句点后的字符数,将超过24个字符的行保存到列表中,然后从源中删除它们。

样本输入:

test.sub.xn--vermgensberatung-pwb
test.sub.xn--vermgensberatung-pwba

预期输出:

test.sub.xn--vermgensberatung-pwb

我当前的代码:

Source='/tmp/source'

while read -r Line || [[ -n "$Line" ]]; do
count="$(echo "$Line" | awk -F. '{ print $NF }' | awk '{ print length }')" #Count length after period
if [[ "$count" -gt '24' ]]; then echo "$Line" >> /tmp/filter; fi           #Save long TLD lines
done < "$Source"

#Remove results from source
cat /tmp/filter | sort > /tmp/filter.clean
comm -23 "$Source" /tmp/filter.clean > /tmp/clean

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)