ファイルの合計レコード数からUNIXスクリプトの1を引いた値を表示するには、パラメーターとして渡します。

ファイルの合計レコード数からUNIXスクリプトの1を引いた値を表示するには、パラメーターとして渡します。

入力は次の形式で提供されます。

ksh -x count.sh filename `cat filepath/filename | wc -l

ここでの問題は、2番目のパラメータcatを別の変数に渡して実行する必要があることですexpr -1

私の要件は、コマンド自体の数を計算してスクリプトに渡す必要があることです。

実際に計算されるレコードの総数は1未満でなければなりません。ヘッダーレコードも削除する必要があります。

答え1

ファイルの合計レコード数を1つずつ減らす最も簡単な方法は次のとおりですawk

awk 'END { print NR - 1 }' filename

NRNRこれは、これまでに読み取ったレコード数を保持する内部変数である負の値を出力します。これは入力の終わりに行われ、ファイルの総レコード数から1を引いた値が与えられます。

これにより、コマンドは次のように書くことができます。

ksh -x count.sh filename "$( awk 'END { print NR - 1 }' filename )"

関連情報