利用wc命令统计文件行,单词数,字符数,利用sort排序和去重,再结合uniq可以进行词频统计。

cat file.txt
sort hello.c | uniq -c | sort -nr |head -5

cat命令查看文件格式与内容。先对文件进行排序,再用uniq -c命令统计不同单词及各个单词出现的次数,得到的结果就是次数后面紧挨的单词,然后使用sort -nr对次数进行排序,并逆序显示,最后head -5命令显示结果的前5行。

类似于sql语句:

select word,count(1) cnt
from file
group by word
order by cnt desc
limit 5;

探索性分析

常用命令:

  • gzip/tar:压缩/解压
  • cat/zcat:文件查看
  • less/more:文件查看,支持gz压缩格式直接查看,分页查看文件
  • head/tail:查看文件前/后10行
  • wc:统计行数、单词数、字符数
  • du -h -c -s:查看空间占用

  • awk:命令行下数据库操作工具

  • join/cut/paste:关联文件/切分字段/合并文件
  • fgrep/grep/egrep:全局正则表达式查找
  • find:查找文件,并且对查找结果批量化执行任务
  • sed:流编辑器,批量修改、替换文件
  • split:对打文件进行切分处理,按多少行一个文件,或多少字节一个文件
  • rename:批量重名民(Ubuntu上带的Perl脚本,其他系统需要安装),使用-n命令进行测试

    gzip -d a.gz #解压缩日志
    tar zcvf/jcvf one.tar.bz2 one #直接查看压缩日志
    less a.gz #无需先解压

z开头的几个命令可以简单处理gzip压缩文件,如zcat:直接打印压缩文件,还有zgrep/zfgrep/zegrep,在压缩文件中直接查找

#查询字符串,并显示匹配行的前3行和后3行内容
fgrep 'yunjie-talk' -A 3 -B 3 log.txt #在当前目录(及子目录)下,所有的log文件中搜索字符串hacked by:
find . -name "*.log" | xargs fgrep "hacked by"

fgrep,grep,egrep的一些区别:fgrep按字符串的本来意思完全匹配,里面的正则元字符当成普通字符解析,如:fgrep “1.2.3.4”只匹配IP地址:1.2.3.4,其中不会匹配任意字符。fgrep比grep快很多。grep只使用普通的一些正则。egrep或grep -E使用扩展的正则。

egrep “one|two” #匹配one或two
grep -E -v ".jpg|.png|.gif|.css|.js" log.txt |wc -l

查找所有来自日本的IP的请求,先把所有来源IP提取出来,去重,找出日本的IP,放入文件japan.ip,再使用命令:

cat log.gz | gzip -d | fgrep -f japan.ip > japan.log

对hive中导出的文件,替换01

cat 0000* | sed 's/x1/ /g' > log.txt

其他常用命令

  • date:命令行时间操作函数
  • sort/uniq:排序、去重、统计
  • comm:对两个排序文件进行按行比较(共同行、只出现在左边文件、只出现在右边文件)
  • diff:逐字符比较文件的异同,配合cdiff,类似于github的显示效果
  • curl/w3m/httpie:命令行下进行网络请求
  • iconv:文件编码转换,如:iconv -份GB2312 -t UTF-8 1.csv > 2.csv
  • seq:产生连续的序列,配合for循环使用

Copyright © 吴华锦
雅致寓于高阁渔舟唱晚,古典悠然
格调外发园林绿树萦绕,馥郁清香

Shell命令行的更多相关文章

  1. 几种在shell命令行中过滤adb logcat输出的方法

    我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adblog ...

  2. 自学Linux Shell2.1-进入shell命令行

    点击返回 自学Linux命令行与Shell脚本之路 2.1-进入shell命令行 进入文本命令行界面(CLI)两种方法: 控制台终端 图形化终端 1. 通过Linux控制台终端访问CLI 按下Ctrl ...

  3. Hadoop HDFS的shell(命令行客户端)操作实例

    HDFS的shell(命令行客户端)操作实例 3.2 常用命令参数介绍 -help 功能:输出这个命令参数手册 -ls                  功能:显示目录信息 示例: hadoop fs ...

  4. Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本

    Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本 在 mac 或者 linux 系统中,我们的浏览器或者其他下载软件下载的文件全部都下载再 ~/Downloads/ 文 ...

  5. HDFS shell命令行常见操作

    hadoop学习及实践笔记—— HDFS shell命令行常见操作 附:HDFS shell guide文档地址 http://hadoop.apache.org/docs/r2.5.2/hadoop ...

  6. Shell 命令行实现将一个站点页面全部下载到本地并替换其中链接的脚本

    Shell 命令行实现将一个站点页面全部下载到本地并替换其中链接的脚本 不知道为什么,我总想用 Shell 脚本来实现把一个站点内容给下载下来.但是下载什么站点我确不知道.今天尝试了一下利用 curl ...

  7. Shell 命令行,实现对若干网站状态批量查询是否正常的脚本

    Shell 命令行,实现对若干网站状态批量查询是否正常的脚本 如果你有比较多的网站,这些网站的运行状态是否正常则是一件需要关心的事情.但是逐一打开检查那简直是一件太糟心的事情了.所以,我想写一个 sh ...

  8. Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件

    Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件 前面我写了一篇博文Shell 从日志文件中选择时间段内的日志输出到另一个文件,利用循环实现了我想要实现的内容. 但是用这个脚本的同 ...

  9. Shell 命令行统计 apache 网站日志访问IP以及IP归属地

    Shell 命令行统计 apache 网站日志访问IP以及IP归属地 我的一个站点用 apache 服务跑着,积攒了很多的日志.我想用 shell 看看有哪些人访问过我的站点,并且他来自哪里. 因为日 ...

  10. Shell 命令行获取本机IP,grep的练习

    Shell 命令行获取本机IP,grep的练习 在 mac 下面输入 ifconfig 或者在 linux 下面输入 ip a 就可以得到我们的网卡信息.不过通常情况下,我们需要查看的是我们的IP地址 ...

随机推荐

  1. Deppon接口开发

    一.1)  支持的传输协议  http ,暂时只支持HTTP协议进行通信. (2) 支持的数据传输格式  Json  ,所有接口暂只支持json消息格式. (3) 编码格式:UTF-8   交互编码格 ...

  2. sublime 快键

    Keyboard Shortcuts - Windows/Linux Warning This topic is a draft and may contain wrong information. ...

  3. WPF学习记录1:ListView的一个模板

    在网上找的一个模板,放在这里,作为笔记,收集 <ListView Grid.Column=" Name="ListmuLu" > <ListView.I ...

  4. Asp.net MVC5中Html.DropDownList的使用

    一.静态下拉列表项的绑定 在下拉列表中绑定静态项,我们可以通过 SelectListItem 的集合作为数据源的下拉列表. @Html.DropDownList("dropRoles&quo ...

  5. Android集成科大讯飞SDK语音听写及语音合成功能实现

    前言 现在软件设计越来越人性化.智能化.一些常见的输入都慢慢向语音听写方向发展,一些常见的消息提示都向语音播报发展.所以语音合成和语音听写是手机软件开发必不可少的功能.目前国内这方面做的比较好的应该是 ...

  6. dojo.create\dojo.place\dojo.empty\dojo.destroy\dojo.body

    1.dojo.create 1.create a node; 2.set attributes on it;  3.place it in the DOM. dojo.create(/*String| ...

  7. C#事件、委托简单示例

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. SQLServer服务器数据库之间的数据操作(完整版)

    分类: 数据库开发技术 ---------------------------------------------------------------------------------- -- Au ...

  9. 使用SQLiteHelper创建数据库并插入数据

    参考<疯狂android讲义>8.4节P424 1.获取SQLiteDatabase实例有2种方法,一是直接new SQLiteDatabase(),另一种使用SQLiteHelper.一 ...

  10. 基于Cookie跨域的单点登录问题

    由于项目中,需要用的单点登录,主要的思路是:系统1:用户名密码-->写入Cookie-->其他系统读取Cookie. 1.在同一个服务器下的Cookie共享 @Component(&quo ...