将记录计数写入unix shell脚本中的变量

时间:2012-09-06 18:02:22

标签: shell unix

我是Shell脚本要求的新手,需要从平面(.txt)文件中获取行数并分配给int变量。

尝试这个但不能正常工作

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

任何建议都将受到赞赏。

2 个答案:

答案 0 :(得分:3)

wc的技巧是,如果在命令行上提供文件名,它会在输出中打印它。为避免这种情况,请将其输入标准输入。 |符号的RHS很奇怪 - 也许你在行动前错过了awk?但这太过分了:你可以写一下:

declare -i recordcount

recordcount=$(wc -l < $FNAME)

(我通常不会打扰declare行。)

请注意,我假设您只有一个文件,并且需要来自一个文件的记录数。如果您需要处理多个文件并获得聚合计数,那么您需要在shell中单独处理每个文件并对wc中的值进行算术运算,或者对所有文件运行wc并让它打印出最后的总行数(可以使用sedawk进行后处理,以获得最后一行输出的数字。)

答案 1 :(得分:0)

FNAME="pn_data_"$month$day$year".txt"
for f in $FNAME
do
  recordcount=$(expr $recordcount + $(wc -l < $f))
done