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