AWK - 我需要编写一个单行shell命令来计算所有行

时间:2016-03-01 05:23:37

标签: bash shell awk

我需要将此解决方案编写为AWK命令。我坚持最后一个问题:

编写一行shell命令,该命令将计算名为" file.txt"的文件中的所有行。在括号中以十进制数开头,包含大写和小写字母的混合,并以句点结束。

实施例(一个或多个):

  

这是我们要打印的行的格式。应跳过与此格式不匹配的行:

     

(10)这是脚本应该来自file.txt的示例行   计数。

     

(117)这是你的剧本应该计算的另一行。

     

应跳过此类行以及其他不匹配的行:

     

15不应打印此行

     

并且不应打印此行

     

在此先感谢,我不确定如何在一行中解决这个问题。

2 个答案:

答案 0 :(得分:1)

这不是家庭作业解决方案服务。但我想我可以提几点。

一个想法是创建一个计数器,然后在结尾打印结果:

awk '<COND> {c++} END {print c}'

我对这个术语感到有点困惑。首先,你声称应该对行进行计数,但在示例中,它表示应该打印这些行。

现在你可以这样做:

awk '<COND>' file.txt | wc -l

第一部分将打印出符合条件的所有行,但输出将被解析为wc -l,这是一个计算行数的单独程序。

现在关于条件<COND>应该是什么,我留给你。我强烈建议你谷歌正则表达式和awk,它不应该太难。

答案 1 :(得分:0)

我认为要求非常明确

  

编写一行shell命令,该命令将计算名为“file.txt”的文件中的所有行,该文件以括号中的十进制数开头,包含大写和小写字母的混合,并以句点结束。 / p>

1. begin with a decimal number in parenthesis
2. containing a mix of both upper and lower case letters
3. end with a period

检查所有三个条件。请注意,在2.它没有说“only”所以你可以有额外的字符类,但它应该至少有一个大写和一个小写字符。

该示例混合了概念打印和计数,如果练习的一部分措辞非常差,或者假设计数将由wc通过过滤脚本的管道输出完成;无论如何应该多加注意,特别是对于学生的锻炼。

如果有任何不清楚的地方请评论,我会添加更多细节......