在30分钟内完成UNIX作业,仍然无法弄清楚如何使这项工作

时间:2015-11-11 02:28:32

标签: bash unix terminal

  1. (50分)编写一个脚本,将大写字母的百分比报告给命令行中指定为参数的文件名的总alpha数。在您的脚本中,您需要
  2. a)验证只有一个命令行参数。确保单个文件名参数是可读文件。如果参数数量不正确,则显示用法语句并使用适当的退出值退出脚本。如果参数不是可读文件,则在退出时使用适当的退出值显示错误消息和用法语句。

    b)计算此文件中的大写字母数,并将结果分配给shell变量UC_count。

    c)计算此文件中的alpha数,并将结果分配给shell变量alpha_count。

    d)使用具有适当比例因子的bc命令,计算文件中大写字母alpha的百分比。注意除以零错误。如果$ alpha_count变量的值为零,则显示该条件的特定消息。

    1. (25分)仅使用此集合中的命令(ls,grep,cut,sed,tr,for和expr),编写脚本以报告所有文件大小总和的大小(以字节为单位) (仅限普通文件)在当前目录中。那是 in 当前目录,而不是当前目录的“in and below”。隐藏文件可能仍然隐藏。
    2. (25分)仅使用命令ls和awk,编写一个脚本来报告当前目录中所有文件大小(仅限普通文件)总和的大小(以字节为单位)。那是 in 当前目录,而不是当前目录的“in and below”。隐藏文件可能仍然隐藏。
    3. 如果有人能帮助我开始这个,我真的很感激。我甚至无法弄清楚首先要用什么来拉出大写字母。看起来grep只给我整行匹配,当我使用-o时,我什么都没得到。

      到目前为止的进展:

      if [ $# -ne 1 ]
      then
      echo "Wrong number of arguments." 1>&2
      echo "Usage: $0 <text_file> 1>$2
      exit 1
      fi
      

2 个答案:

答案 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命令计算从标准输入读取的字符数。