0

我是 Shell 脚本要求的新手,需要从 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条线。)

请注意,我假设您只有一个文件并且需要来自一个文件的记录数。如果您需要处理多个文件并获得总计数,那么您要么需要在 shell 中分别处理每个文件并对 from 的值进行算术运算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 回答