shell题

作者: 奔向学霸的路上 | 来源:发表于2020-07-01 10:45 被阅读0次
  1. 统计词频

写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。

为了简单起见,你可以假设:

  • words.txt只包括小写字母和 ' ' 。
  • 每个单词只由小写字母组成。
  • 单词间由一个或多个空格字符分隔。

示例:
假设 words.txt 内容如下:

the day is sunny the the
the sunny is is

你的脚本应当输出(以词频降序排列):

the 4
is 3
sunny 2
day 1

题解:

cat words.txt |tr -s ' ' '\n'| sort | uniq -c | sort -nr | awk '{print $2" "$1}'

cat ——浏览文件
tr -s —— tr处理字符串,-s缩减连续重复的字符成指定的单个字符;tr -s ' ' '\n'最后将字符串空格替换成换行,保证一行只有一个单词
sort —— 排序,排序后还是有重复
uniq -c ——去重并计数,输出结果类似于 the 4;先sort再uniq -c的原因是uniq必须是相邻重复才会去重
sort -nr—— -n 依照数值的大小排序,-r 以相反的顺序来排序
awk——格式化输出,规定先输出字符串再输出数字,空格可以用' '或" ",由于外层已经有了'',所以内层只能用""

  1. 过滤后统计出现的次数

有一个线上服务器访问日志 格式如下(shell)

2016-11-09 11:22:05           /api/user/login                   110.23.5.33
2016-11-09 11:23:10          /api/user/detail                    57.3.2.16
......
2016-11-09 23:59:40           /api/user/login                    200.6.5.166

要求统计11月9号下午14点(14-15点),访问/api/user/login接口top10的ip地址和数量

题解:

cat log | grep '2016-11-09 14' | grep '/api/user/login' | awk '{print $3}' | sort | uniq -c | sort -nr | head

3.有效电话号码

给定一个包含电话号码列表(一行一个电话号码)的文本文件 file.txt,写一个 bash 脚本输出所有有效的电话号码。

你可以假设一个有效的电话号码必须满足以下两种格式: (xxx) xxx-xxxx 或 xxx-xxx-xxxx。(x 表示一个数字)
你也可以假设每行前后没有多余的空格字符。

示例:
假设 file.txt 内容如下:
987-123-4567
123 456 7890
(123) 456-7890
你的脚本应当输出下列有效的电话号码:
987-123-4567
(123) 456-7890

题解

最终的正则表达式为:

^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$
//或者(括号用\s来替换)
^([0-9]{3}-|\([0-9]{3}\)\s)[0-9]{3}-[0-9]{4}$ 

此题可以用awk或grep都行
1.awk方式(awk的正则表达式匹配格式:awk '/你的表达式/')

awk '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/' file.txt

2.grep方式(-E或者-P)

grep -E '^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$' file.txt
grep -P '^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$' file.txt

相关文章

  • shell题

    统计词频 写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。 为了简单起见,你可...

  • Linux下几种常见的反弹shell方式

    最近在做ctf题时碰到一些命令执行题借用命令执行来反弹shell,这里记录一下。 1.bash反弹shell 个人...

  • shell(操作题)

    考试题 5: 通过脚本传参的方式,检查 Web 网站 URL 是否正常(要求主体使用函数)。 考试题 6: 开发 ...

  • 北京好未来公司linux面试试题

    题一:用shell程序查找192.168.190.1-192.168.190.100哪个主机在线,分别显示其在线情...

  • 2021-08-20

    刷题 订座位 探病的物资 runtime寄存器? auto shell实现? 刷题,第二天92通过了 没有订到座位...

  • shell作业题-20190413

    课间作业练题 1、打印所有的连接到shell服务器的学员数,以ip为准 netstat -tnp | awk '{...

  • shell作业题-20190403

    课程知识点: 基本语法 Linux三剑客 课间作业练题 1、搭建小型web服务 python2 -m CGIHTT...

  • shell企业面试真题

    问题1:使用liunx命令查询file1中空行所在的行号 问题2:有文件chengji.txt内容如下 zhang...

  • 致考研的你——那些问与答

    文/shell苏寒 成功既是一道选择题,也是一道证明题。考研亦如此。 最近身边有许多的学弟学妹,对考研的事项比较苦...

  • Shell 学习

    shell 变量 shell 参数传递 shell 数组 shell 运算符 shell echo 命令 prin...

网友评论

      本文标题:shell题

      本文链接:https://www.haomeiwen.com/subject/pvaxqktx.html