배쉬

2014-02-11 5 views
2
현재

에서 연관 배열에 인덱스 배열을 변환, 나는 다음과 같은 문제 중 하나에 해결책을 찾기 위해 사투를 벌인거야 :배쉬

  1. 어떻게 정상적인 배열 (인덱스는 0에서 시작하는 인덱스 배열을 변환)를 값이 키가되고 값 자체가 값인 연관 배열로 변환합니다.
  2. 값이 키인 인덱스 배열에서 새 assoc 배열을 만듭니다. 그리고 이것은 하나의 성명서에 있습니다. 나는 그것이 매우 잘 루프를 사용하여 수행 할 수 있지만 거의 500,000 요소를 포함하는 거대한 크기의 배열에 대해서는 루프가 오버 헤드라는 것을 알고 있습니다.
  3. mysql 쿼리의 결과로 assoc 배열을 만듭니다. .

    mapfile -t a_dummy <<< "$(mysql -u root –disable-column-names –silent -B -e "select * from dummy_tbl;" "$DB_NAME") "

$ DB_NAME은 DB 이름 문자열에 변수를 가리키는입니다

+0

awk의 배열은 연관 배열입니다. 도움이 될만한 것이 있다면보십시오. – BMW

+0

이 유형의 데이터 처리를 수행하려면 셸이 아닌 다른 언어를 사용하는 것이 좋습니다. – chepner

답변

2

여기 sed를 사용하여 하나의 방법이다 : 나는 일반적으로 아래와 같이 MySQL의 SQL 쿼리 결과에서 인덱스 배열을 만들 그러나 원래 배열의 요소 중 공백이 포함되지 않은 경우에만 작동합니다.

declare -A "newArray=($(echo ${oldArray[@]} | sed 's/[^ ]*/[&]=&/g'))" 

sed 명령은 각 배열 요소 'x'를 가져 와서 '[x] = x'문자열로 바꿉니다. 이는 연관 배열 할당에 적합합니다.