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를 유지합니다.
마지막으로 예약된 공간을 가져와서 포맷하고 인쇄합니다.