2016-08-24 12 views
0

シェルのパーセンテージを計算したいと思います。しかし、私はそれをすることはできません。私のスクリプトは、それはどちらも任意の値を示していないも、このスクリプトを実行するときにを終了シェルのパーセンテージを計算する方法

#!/bin/bash 
#n1=$(wc -l < input.txt) #input.txt is a text file with 10000 lines 
n1=10000 
n2=$(awk '{printf "%.2f", $n1*0.05/100}') 
echo 0.05% of $n1 is $n2 

です。あなたがしなければ

+0

どうしてですか?あなたを止めるのがエラーですか?何があなたを妨害していますか? – Li357

+0

終了していません.. – Kay

+0

[awkスクリプトのシェル変数の使い方](http://stackoverflow.com/questions/19075671/how-to-use-shell-variables-in-awk-script)の可能な複製 – tripleee

答えて

3

awkは、単一引用符内だとして、ことをあなたにN1違法なフィールド名を与えます。 また、awkを読み取ることを避けるためには、ファイルとして/dev/nullを渡す必要があります。その後:

n2=$(awk -v n1="$n1" 'BEGIN {printf "%.2f", n1*0.05/100}' /dev/null) 
1

のではなく、ファイル内のレコードをカウントするための新しいプロセスを開始し、その後awkに、私はあなたがawkはそれが変数NRにとにかくありません、レコード自体を数えてみましょうお勧めしますことを渡します。したがって、スクリプト全体は次のようになります。

percentage=$(awk 'END{print NR*0.05/100}' input.txt) 
関連する問題