awk 배열 요소에 숫자를 추가하는 방법은 무엇입니까?

awk 배열 요소에 숫자를 추가하는 방법은 무엇입니까?

다음 bash 변수가 있는 경우:

$ echo "${pos}"

201
719
744
205
354

...다음과 같은 결과가 나옵니다...

!#bin/bash
(
    IFS=: 
    awk -v str2="$pos" -v sep="[$IFS]" '
        BEGIN {
            m = split(str2, b, sep)
            for (i=1; i<=m; ++i) {print b[i]}
        }
    '
)

-----------------
$ ./myscript.sh

201
719
744
205
354

...그런데 그렇게 하세요...

(
    IFS=: 
    awk -v str2="$pos" -v sep="[$IFS]" '
        BEGIN {
            m = split(str2, b, sep)
            for (i=1; i<=m; ++i) {print b[i]+10}
        }
    '
)

------
./myscript.sh

211

...그래서 추가 기능은 작동하지만 모든 요소에 대한 결과를 인쇄하지는 않습니다. 왜 안 돼?

답변1

이것은 IFS=: 설정이 잘못되었습니다. 따라서 Split()은 배열을 값으로 채우지 않고 str2의 한 값으로 채웁니다. 따라서 for 루프에서 b[i]를 인쇄하지만 실제로는 전체 str2인 b[1]을 한 번 인쇄합니다. 새 줄에서는 배열 b의 멤버를 인쇄한다고 생각하지만, Split()의 retrn 값을 확인하면 1입니다. IFS=:를 제거하면 스크립트가 제대로 작동합니다.

관련 정보