Я думаю, что вы хотите:
cut -d"." -f2 inputFile.txt | sort -u | awk '{print "*."$0".*.*"}'
EDIT:
Если я вам сейчас, то:
awk -F. '{if ($2 >= 153 && $2 <= 156) print $0}' inFile
будет производить:
10.153.2.5
10.155.20.22
10.153.20.23
10.153.30.10
Для того, чтобы последняя цифра в 156, чтобы быть переменным от внешнего использования:
i=6
awk -F. '{if ($2 >= 153 && $2 <= 15'$i') print $0}' inFile
EDIT 2
Если неясно, как превратить эти результаты в список вы можете итерации по:
x=$(awk -F. '{if ($2 >= 153 && $2 <= 15'$i') print $0}' inFile)
или вы можете перебрать это немедленно:
for ip in $(awk -F. '{if ($2 >= 153 && $2 <= 15'$i') print $0}' inFile); do
//stuff;
done;
Или чистый бас:
for ip in $(<Infile); do
y=${ip%.*.*}; oct=${y#*.};
if [[ $oct -ge 153 ]] && [[ $oct -le $i ]]; then
#Do stuff with $ip!
fi
done
Что такое вход, и каков выходной сигнал? приведи примеры. – kabanus
10.150.2.3 10.152.2.5 10.153.2.5.10.155.20.22 10.153.20.23 10.153.30.10 10.158.33.4 10.160.11.20 10.142.20.12 10.142.20.11 и более .. в одном столбце – Unixer
почему «10.158.33.4» пропущено из ваш результат (как '153 + 5' дает' 158')? – RomanPerekhrest