2013-02-21 3 views
0

일부 행을 bash 스크립트로 재배치하고 싶습니다.bash 스크립트에서 동일한 인수를 사용하여 행을 다시 정렬/그룹화하십시오.

입력 :

Name1 127.0.0.1 
Name2 127.0.0.2 
Name2 127.0.0.5 
Name2 127.0.0.8 
Name3 127.0.0.3 

출력 :

Name1 127.0.0.1 
Name2 127.0.0.2, 127.0.0.5, 127.0.0.8 
Name3 127.0.0.3 

등 '나오지도' 'AWK'또는이 작업을 수행 할 수있는 스마트 한 방법이 있나요? 감사!

+0

로 호출 할 수 있습니다 적절한 이름

declare -A ips while read name ip; do if [ -n "${ips[$name]}" ]; then ips[$name]="${ips[$name]}, $ip" else ips[$name]="$ip" fi done for i in "${!ips[@]}"; do echo "$i ${ips[$i]}" done 

모든 IP를 및 그룹을 선택합니다. 'awk'에 익숙하지 않다면, 가장 안락한 언어로 작성하십시오. – Johnsyweb

+1

예 : cat test_data | awk '{arr [$ 1] = arr [$ 1]? arr [$ 1] ","$ 2 : $ 2} END {for var in arr} print var ""arr [var]} " – XzKto

+0

@XzKto : 좋습니다! 정확히 내가 무엇을 찾고 있었는지. 고마워요! – user1613270

답변

1

이 하나는 bash과 작동합니다. 이 작업을 수행 : 그것은 당신이 [AWK 태그]에서 프로그램을 작성하는 매우 쉬운 것입니다

bash script.sh <input.txt 
+0

공유 주셔서 감사합니다. 이것은 또한 내가 한 프로그래밍 방식입니다. 난 그냥 XzKto 위에서 솔루션을 선호 - 우아한 한 - 라이너 ;-) – user1613270

관련 문제