awk 문의 변수를 사용하여 배열 요소 검색

awk 문의 변수를 사용하여 배열 요소 검색

아래는 오류를 발생시키는 코드 부분입니다.

for (( p=0; p<${var2}; p++ ))
do

if [[ ${array2[$p]} == *"xyz"* ]]
then
    awk -F" " '{ array3[p]="123" };1' ${array1[$i]}
else
    awk -F" " '{ array3[p]="456" };1' ${array1[$i]}
fi

디버그 모드에서 스크립트를 실행하면 p 값이 고려되지 않는 것을 볼 수 있습니다.

+ awk '-F ' '{ array3[p]="456" };1' oct.csv

스크립트를 실행 중이고 ./script.sh/bin/ksh을 사용하고 있습니다. 도와주세요.

답변1

첫째, 이것은 잘못된 것입니다:

awk -F" " '{ array3[p]="123" };1' ${array1[$i]}

${array1[$i]}파일이 아니므로 첫 번째 명령줄 인수로 던질 수 없습니다 awk. 변수의 경우 아래와 같이 echo $VARIABLE여기에 문자열을 사용하거나 문자열을 사용해야 합니다.<<<

awk -F" " '{ array3[p]="123" };1' <<< ${array1[$i]}

둘째, 첫째, 범위의 문제이다. 코드 array3[p]="123"내에만 존재하므로 코드 외부에 아무것도 할당할 수 없습니다. awk하지만, 당신이 할 수 있는 일은 하는 것뿐이다.

array3[$p]="123"

$i또한 스크립트의 출처가 정확히 어디인지도 확실하지 않습니다 . 전반적으로 귀하의 질문은 몇 가지 코드를 제공하지만 귀하의 질문에 완전히 답할 수 있는 단서는 제공하지 않습니다.

관련 정보