주어진 IP 주소 범위에서 모든 클래스 C 주소를 인쇄하고 마지막 옥텟을 별표로 바꾸는 방법

주어진 IP 주소 범위에서 모든 클래스 C 주소를 인쇄하고 마지막 옥텟을 별표로 바꾸는 방법

예: 내 범위는 10.0.100.0에서 10.0.224.0이며 다음과 같은 출력을 원합니다.

10.0.100.*
10.0.101.*
10.0.102.*

등.

답변1

$ printf '%s\n' 10.0.{100..224}.\*
10.0.100.*
10.0.101.*
10.0.102.*
10.0.103.*
10.0.104.*
10.0.105.*
[...snip...]

답변2

노력하다 sed:

$ sed -i 's/[0-9]\+$/\*/' file.txt 
10.0.100.*
10.0.101.*
10.0.102.*

편집하다: 범위를 먼저 생성한 다음 마지막 옥텟을 바꾸려면 다음을 시도하십시오.

사용할 수 있는 범위를 생성하려면 echo 10.0.{100..224}.0 | tr ' ' '\n'(John1024의 답변은 사용하는 또 다른 접근 방식을 보여줍니다 printf).

이제 마지막 옥텟을 다음으로 바꾸고 *파일에 저장합니다.

$ echo 10.0.{100..224}.0 | tr ' ' '\n' | sed 's/[0-9]\+$/\*/' > output.txt

출력만 인쇄하려는 경우:

$echo 10.0.{100..224}.0 | tr ' ' '\n' | sed -n 's/[0-9]\+$/\*/p'

*귀하의 경우에는 범위를 생성할 때 마지막 옥텟만 만드는 것이 좋습니다 (확인John1024의 답변).

관련 정보