0

私はシェルスクリプトの初心者です。flat(.txt)ファイルから行数を取得してint変数に割り当てる必要があります。

これを試しても機能しない

FNAME="pn_data_"$month$day$year".txt"
   declare -i recordcount=0
      for f in $FNAME
     do
       recordcount+=`wc $f |'{print $1}'`
     done

周りの提案をいただければ幸いです。

4

2 に答える 2

3

の秘訣wcは、コマンドラインでファイル名を指定すると、それが出力に出力されることです。これを回避するには、標準入力をフィードします。シンボルのRHSは奇妙です—アクションの前で|逃したかもしれませんか?awkしかし、それはやり過ぎです:あなたは単に書くことができます:

declare -i recordcount

recordcount=$(wc -l < $FNAME)

(そして、私は通常、declare回線を気にしません。)

ファイルが1つだけで、1つのファイルからのレコード数が必要であると想定していることに注意してください。複数のファイルを処理して集計数を取得する必要がある場合は、シェルで各ファイルを個別に処理してからの値を計算するwcか、すべてのファイルを実行wcして合計行数を出力する必要があります。最後に(これは後処理するsedawk、出力の最後の行から数値だけを取得することができます)。

于 2012-09-06T18:09:56.490 に答える
0
FNAME="pn_data_"$month$day$year".txt"
for f in $FNAME
do
  recordcount=$(expr $recordcount + $(wc -l < $f))
done
于 2012-09-06T18:09:25.357 に答える