Bash 텍스트 파일의 숫자 나누기

Bash 텍스트 파일의 숫자 나누기

test.txt 파일에 두 개의 숫자가 있고 두 번째 숫자를 첫 번째 숫자로 나누고 결과를 사용할 수 있는 bash 스크립트의 변수나 파일에 할당하는 방법을 원합니다. 나는 명령줄에 숫자 1을 표시하곤 했지만 awk "NR==1" test.txt스크립트 내에서는 awk "NR==2" test.txt / awk "NR==1" test.txt그러한 인용문/괄호 조합을 모두 시도했습니다. 명령줄을 사용하면 나누기 결과나 구문 오류가 발생하는 대신 결과로 num2/num1이 표시됩니다. 저는 Debian Linux를 운영 체제로 사용합니다. test.txt 파일에는 다음이 포함됩니다.

0250368000
0182885654

두 번째 숫자를 첫 번째 숫자로 나누고 싶습니다. var=0182885654/0250368000 숫자는 수시로 변경되며 이러한 숫자를 처리할 수 있는 스크립트가 필요합니다.

답변1

변수에 할당됨

var=$(awk 'NR==1{a=$0}NR==2{print $0/a}' test.txt)

또는 파일로 출력:

awk 'NR==1{a=$0}NR==2{print $0/a}' test.txt > output

답변2

quotient=$(dc -f test.txt -e 'r[num desired precision]k/p')

답변3

 awk ' NR == 1 { a = $1 }
       NR == 2 { b = $1 }
       END { print a
             print b
             print b/a } ' data

여기서 데이터는 다음을 포함하는 텍스트 파일입니다.

0250368000
0182885654

답변4

유용한 것을 얻기 위해 오래된 단계별 기술을 사용했지만 모든 것을 한 단계로 수행하고 싶습니다.

num1=$(awk 'NR==2' test1.txt)
echo $num1 #result is 0247421924
num2=$(awk 'NR==1' test1.txt)
echo $num2 #result is 0250368000
score=`awk 'BEGIN{printf("%0.0f", '$num1' * 100 / '$num2' )}'`

echo $score # result is 99

보시다시피 정수를 얻으려면 첫 번째 숫자에 100을 곱해야 합니다. 죄송합니다. 줄 간격을 적용할 수 없습니다.

관련 정보