1

我正在尝试根据我设置的 IP 范围从文件中删除多个 IP 条目。

文件的前:

15.12.168.192 13.13.168.192 23.12.168.192 23.15.168.192 等...

我只想在脚本下方设置 RANGE 区域。

#!/bin/bash

# RANGE 
START=192.168.12
END=192.168.13


##collecting the last two digit from START and END
first=`echo $START | sed 's/^.*\(.\{2\}\)$/\1/'`
last=`echo $END | sed 's/^.*\(.\{2\}\)$/\1/'`

## echo both
echo $first
echo $last

for ip in 192.168.1.{$first..$last}; do
echo "$ip"

## conversion of the IPs.
echo $ip | sed -e '/\n/!G;s/\([^.]*\)\.\(.*\n\)/&\2.\1/;//D;s/\n//'
done

即使对文件还有最后一步(grep -v)——我已经被困在这个阶段了;我知道这是一种可以计算的语法......

这是行:

for ip in 192.168.1.{$first..$last}; do
echo "$ip"

这是使用$first$last生成每个给我带来麻烦的 IP。

4

1 回答 1

1

{12..45}仅适用于文字,不能使用变量。但是,如果只有一对大括号,则不需要扩展:

for fourth in $( seq $first $last) ; do
    echo 192.168.1.$fourth
done
于 2013-05-20T09:40:51.310 回答