한 줄에 `ifconfig`에서 여러 IP 주소를 인쇄합니다.

한 줄에 `ifconfig`에서 여러 IP 주소를 인쇄합니다.

ifconfig한 줄에 여러 개의 IP 주소를 인쇄 하고 싶습니다 .

이것이 내가 사용하려고하는 것입니다.grep, cut and awk

user@linux:~$ ifconfig | grep ad.*Bc
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet addr:10.1.1.1  Bcast:10.1.1.255  Mask:255.255.255.0
user@linux:~$ 

user@linux:~$ ifconfig | grep ad.*Bc | cut -d: -f2
192.168.1.1  Bcast
10.1.1.1  Bcast
user@linux:~$ 

user@linux:~$ ifconfig | grep ad.*Bc | cut -d: -f2 | awk '{ print $1}'
192.168.1.1
10.1.1.1
user@linux:~$ 

불행히도 내가 얻을 수 있는 최고의 결과는 다음과 같습니다.

192.168.1.1
10.1.1.1

두 줄로.

이런 결과물이 나올 수 있나요?

192.168.1.1 , 10.1.1.1

답변1

|tr -s '\n' ','안녕하세요, 마지막 에 추가해 보실 수 있나요 ?

이는 개행 문자를 쉼표로 대체합니다. 문제는 뒤에 오는 줄이 없다는 것입니다. 필요한 경우 추가할 수 있습니다.

답변2

그냥 사용출력 레코드 구분 기호( )를 awk에서 ORS쉼표( ) 로 사용,

ifconfig | grep ad.*Bc | cut -d: -f2 | awk 'BEGIN{ORS=" , ";} {print $1}' | sed 's#, $##' &&  echo ""

답변3

echo $(ifconfig | grep -o 'addr:[^ ]*' | cut -f2 -d:) | sed 's/ /, /g'                               

grep -o패턴과 일치하는 문자열만 출력합니다. 이 cut명령은 addr:접두사를 제거합니다. 다른 Linux 버전(예: Debian)은 다른 ifconfig출력을 가지며 이 주소를 따르지 않습니다 addr:.

명령 대체를 통해 $( ... )각 "단어"를 echo에 대한 인수로 사용하여 결과를 한 줄로 연결합니다 .

마지막 sed으로 각 공백을 ,.

답변4

이 sed를 사용해 볼 수 있습니다

ifconfig | sed -n '
  $ {
  x
  s/^.//
  s/\n/ , /
  p
}
/.*addr:/!b
  s///
  s/ .*//
  H'

"addr:"로 모든 줄을 유지합니다.
모든 항목을 삭제하고 예약된 공간에 IP를 유지합니다.
마지막으로 예약된 공간을 가져와서 포맷하고 인쇄합니다.

관련 정보