我是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
任何建议都将受到赞赏。
答案 0 :(得分:3)
wc
的技巧是,如果在命令行上提供文件名,它会在输出中打印它。为避免这种情况,请将其输入标准输入。 |
符号的RHS很奇怪 - 也许你在行动前错过了awk
?但这太过分了:你可以写一下:
declare -i recordcount
recordcount=$(wc -l < $FNAME)
(我通常不会打扰declare
行。)
请注意,我假设您只有一个文件,并且需要来自一个文件的记录数。如果您需要处理多个文件并获得聚合计数,那么您需要在shell中单独处理每个文件并对wc
中的值进行算术运算,或者对所有文件运行wc
并让它打印出最后的总行数(可以使用sed
或awk
进行后处理,以获得最后一行输出的数字。)
答案 1 :(得分:0)
FNAME="pn_data_"$month$day$year".txt"
for f in $FNAME
do
recordcount=$(expr $recordcount + $(wc -l < $f))
done