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을 곱해야 합니다. 죄송합니다. 줄 간격을 적용할 수 없습니다.