출력 형식을 어떻게 지정합니까?

출력 형식을 어떻게 지정합니까?

다음 명령의 출력 형식을 지정하려고 합니다.

MYIP=(/sbin/ifconfig $(getnic) | awk '/inet/ { print $2 } ' | sed -e s/addr://); echo $MYIP

다음 출력을 생성합니다.

172.30.0.1 fe80::42:c5ff:fecd:f09f 172.31.0.1 fe80::42:47ff:fe57:2f0d 172.17.0.1 fe80::42:a1ff:fe4e:2508 127.0.0.1 ::1 fe80::2887: fcff:fe19:e54b fe80::bc99:3aff:fe46:dcab fe80::b090:4cff:fecb:3dc4 fe80::9c0f:6dff:fe6b:6c71 fe80::808f:5fff:febb:2669 fe80::f851: 23ff:fee4:c87a fe80::4c97:24ff:fe04:ea02 fe80::4cde:e2ff:feb7:4784 fe80::c4fc:4aff:fe67:1863 192.168.1.134 fe80::d1f1:947f:9370:74ca

어떻게 하면 더 보기 좋게 만들 수 있나요? 각 ipaddress를 별도의 줄에 입력하면 되나요?

편집하다:밝히다;이제 모든 IP를 각 IP마다 하나씩 별도의 줄에 입력하고 싶습니다. v6 번호를 제거하는 것은 좋지만 htatäs는 실제로 중요하지 않습니다. 그러나 이것은 추가 보너스가 될 것입니다.

tr, sed, awk를 시도했지만 뭔가 잘못했거나 잘못된 명령을 사용하고 있는 것 같습니다. 내 생각은 일종의 텍스트 인수 마법을 달성하기 위해 끝에 또 다른 파이프를 추가하는 것이었습니다.

편집: 전체 기능은 다음과 같습니다.

function myip() {
    MY_IP=$(/sbin/ifconfig $(getnic) | awk '/inet / { print $2 } ' | sed -e s/addr://| sort)
    echo -e ${MY_IP:-"Not connected"}
}

그러나 여전히 개행 문자는 인쇄되지 않습니다. 지금 열심히 일하고 있어요. 모든 의견을 보내주셔서 감사합니다.

답변1

현재 가지고 있는 명령 문자열 끝에 다음을 추가하세요.

| tr ' ' '\n' 

공백 문자를 개행 문자로 바꿉니다.

답변2

echo- 문을 다음으로 바꾸세요 .

printf '%s\n' ${MY_IP:-"Not connected"}

행동을 잘해야 합니다.

printf형식 문자열에 대한 모든 인수가 평가되어 '%s\n'제공한 각 문자열 뒤에 개행 문자가 인쇄됩니다.

관련 정보