a)验证只有一个命令行参数。确保单个文件名参数是可读文件。如果参数数量不正确,则显示用法语句并使用适当的退出值退出脚本。如果参数不是可读文件,则在退出时使用适当的退出值显示错误消息和用法语句。
b)计算此文件中的大写字母数,并将结果分配给shell变量UC_count。
c)计算此文件中的alpha数,并将结果分配给shell变量alpha_count。
d)使用具有适当比例因子的bc命令,计算文件中大写字母alpha的百分比。注意除以零错误。如果$ alpha_count变量的值为零,则显示该条件的特定消息。
如果有人能帮助我开始这个,我真的很感激。我甚至无法弄清楚首先要用什么来拉出大写字母。看起来grep
只给我整行匹配,当我使用-o
时,我什么都没得到。
到目前为止的进展:
if [ $# -ne 1 ]
then
echo "Wrong number of arguments." 1>&2
echo "Usage: $0 <text_file> 1>$2
exit 1
fi
答案 0 :(得分:2)
有很多方法可以解决这个问题。您可以做的一件事是使用sed将字母字符重新格式化为换行符,然后使用grep计算匹配行。以下是您可以计算文件中字母字符的方式:
sed -E 's/[a-zA-Z]/\n&\n/g' file.txt | grep -Ec '^[a-zA-Z]$'
然后只计算大写字母:
sed -E 's/[A-Z]/\n&\n/g' file.txt | grep -Ec '^[A-Z]$'
您可以将这些存储到变量中,并按照惯例在脚本中进行划分。
答案 1 :(得分:0)
您可以使用tr
命令从文件中提取大写字母,并(在单独的调用中)提取所有字母。您可以使用man tr
阅读tr
命令的手册。
wc -c
命令计算从标准输入读取的字符数。