아래에 설명 된 bash 스크립트에서 전달 된 변수를 사용하여 awk (루프 내부)와 테이블의 두 숫자를 합산하려고합니다. 내가 다루고있는 숫자 ($ value)는 부동 소수점 값입니다. $ 값에는 하나의 숫자 만 포함됩니다. 오류가 발생한 줄은 126, 125가 잘 작동합니다.awk 오류 인수 목록이 너무 길고 두 변수 만
111 while read line
112 do
120 n=2
121 sum=0
122
123 for x in $(seq 1 $number)
124 do
125 value=$(echo "$line" | awk -v n="$n" '{print $n}') # I am just getting the values to sum up here
126 sum=$(awk -v sum="$sum" -v value="$value" '{sum = sum + value; print sum}')
n=$((n+1))
129 done
done < $file
여기서 $ number는 이전에 정의되어 있습니다.
./script.sh: line 126: /bin/awk: Argument list too long
나는 단지이 라인에 awk 명령에 두 변수를 전달하기 위해 노력하고, 나는이 오류가있는 이유 어떤 생각 :
나는 다음과 같은 오류가?
"파일"의 테이블의 예 :
A -0.717616 -0.623398 -0.214494 -0.352871
B -0.19373 -0.140626 -0.0523623 0.0248858
C -0.0822092 -0.302354 0.347158 -0.0373262
D 0.310213 0.312805 0.114366 0.353496
E -0.175354 -0.0263985 -0.125694 -0.155082
감사합니다!
당신이하고 싶은 것을 이해하는 데 힘든 시간을 보냈지 만 한 줄씩 파일을 읽고, 그 줄의 필드를 하나씩 옮긴 다음 awk에서 결과를 추가하는 것은 정말 기괴한 방법처럼 보입니다. 해결하려고하는 것이 무엇이든 해결하십시오. 나는이 모든 일이 하나의 awk 명령으로 수행 될 수 있다고 여기에서 베팅하고있다. 파일의 예를 공유하고 예상되는 결과를 공유 할 수 있습니까? – JNevill
'print'는'sum'의 값뿐만 아니라 전체 입력 행을 출력합니다. – chepner
것은 라인 당 필드 수가 다른 여러 파일에서이 스크립트를 사용하고 있습니다. 기본적으로 라인 당 필드 수는 $ number에 포함됩니다. 파일이 어떻게 보이는지 샘플을 추가했습니다.이 파일에는 4 개의 열이 있지만 방금 언급했듯이이 숫자는 다를 수 있습니다. 예상되는 결과는 각 행에 대한 모든 필드의 합계입니다. 그 말이 더 의미가 있기를 바랍니다. 내가 지정할 수있는 다른 것이 있으면 알려줘. – arielle