$ awk 'BEGIN {count=0};
NF>1 && $2 ~ /^[[:digit:]]+$/ {print;next};
{count++};
END { print "Removed " count " lines." }' input.txt
AC 14 68123822 68123928
AC 16 34977639 34990886
AG 2 162266065 162266181
Removed 6 lines.
Если десятичные точки допустимы, используйте вместо них следующее:
$ awk 'BEGIN {count=0};
NF>1 && $2 ~ /^[[:digit:]]+(\.[[:digit:]]+)?$/ {print;next};
{count++};
END { print "Removed " count " lines." }' input.txt
Вывод для этой версии такой же, как и ваш пример ввода, потому что нет числовых -только вторых полей с десятичными точками.
Кстати, если вы не хотите, чтобы удаленные строки учитывались в основном выводе, вы можете напечатать их в stderr вместо стандартного stdout. Замените блок END на :
.END { print "Removed " count " lines." > "/dev/stderr" }
Ваш код работает. Проблема в другом.
Вы можете проверить, сработало ли вообще ваше правило, с помощью
iptables -nvL INPUT
Возможно, вы случайно используете IPv6 (, если используется адрес localhost
; вместо этого используйте 127.0.0.1 ).
Или в дополнение к iptables
используется его преемник nftables
. Свяжитесь с
nft list ruleset