【linux】数据分析常用Linux小命令(四)——我就看看系列

        • vim
        • cat
        • head&tail
        • more
        • less
        • wc
        • awk

在数据分析工作中,当我们要处理一个数据时,通常想先对要处理的文件有一个大概了解,大概多大啊,多少行多少列啊,结构长什么样啊,有哪些维度啊。当然借助python pandas包可以轻松实现这些,但读数据是需要时间和内存的,那有没有更方便的linux命令可以避免占内存,花时间就能让我们对文件有个了解呢?今天我们就介绍几个常用的“我就看看”小命令。

vim

上一章讲到了vim编译,其实对于不算太大的文件,直接vim打开没啥问题,我们也就直接能看到数据长什么样了。但是,对于比较大的文件,再加上机器不给力,就会出现一vim就卡死的状况,这个时候就只能强退了。
这里插句题外话,当我们vim一个文件时,一不小心遭遇了强退,下次再用vim打开该文件时,系统就会提示我们该文件正在被另一个程序编辑中,可是上次的窗口都没了,我们也没法退出,怎么办呢?其实,系统之所以能知道这个文件正在打开状态下,是因为它监测到当前路径下有个“.”开头的swap文件(可以用ls -a查看),比如当我们用vim打开abc.py时,当前路径下就生成了一个.abc.py.swp,你不用vim退出,他就不会消失。这时,我们只要删除这个swap文件(rm .abc.py.swp),就相当于把abc.py退出编辑状态了。

cat

cat命令基本功能就是查看纯文本文件的内容,它会将文件中的内容打印到屏幕。cat -n还会给文件内容加个行号再打印。
同vim一样,它也是只适用于查看小文件,对于成千上万行的文件,我们也不可能全打到屏幕上。如果我们只想看前几行怎么办呢?可以利用管道符,接一个命令:cat -n abc.py | head -n 10就达到了只看前10行的目的。

head&tail

其实我们也发现了,head本身就是一个命令,直接head -n 3 abc.py 就可以查看文件前3行了,这个命令可以简写为head -3 abc.py。
如果想看文件最后几行,就用tail命令,语法同head一样,但tail命令还有个更强大的功能,就是tail -f可以实时更新文件信息。比如我们有个大任务在跑,任务日志会打印到abc.log文件中,这时我们用tail -f abc.log就可以实时跟踪日志的更新了。

more

more命令可以理解为cat命令的升级版,cat命令是不管你文件多少行,全都打到屏幕上;而more命令就更加可控,每次只显示一页,可以一页一页地往下翻,more常用命令参数有以下几个:

  • Space:翻到下一页
  • b:返回上一页
  • -数字:more -5 一页显示5行
  • +数字:more +5 从第5行开始显示
  • q:退出

less

more命令虽然是cat的升级版,但还是不够先进,因为more命令每次还是会加载整个文件。那能不能看多少就只加载多少呢?less命令就能实现,less命令的强大之处就在于,文件后面还没看到的部分统统不加载,这就像赌牌时候看牌一样,只露出一点点来看。
less命令常用参数和more差不多:

  • Space:向下翻一页
  • Enter:向下一行
  • b:向上翻一页
  • y:向上一行
  • /:像上一章讲到的vim底线命令一样,在less中/号也可以实行查找功能,同样,命令n定位下个找到的关键字,N定位上个关键字。
  • q:退出less命令

wc

上面几个命令都可以帮助我们快速看看文件开头长啥样,但我们想快速知道文档有几行怎么办呢,就用wc命令。

执行wc命令,一下蹦出来三个数字,啥意思呢,从左到右分别代表行数、单词数和字节数,而且同时wc几个文件,这个命令还会帮我们算一个汇总的结果,显示在最后一行。

当然很多时候我们不需要这么多信息,参数-c、-w、-l可以控制只显示字节数、单词数和行数。

awk

数据分析中经常处理dataframe格式的数据,有多少列也很重要,那能不能快速知道文件有多少列呢?需要借助awk命令了:
awk -F‘\t’ ‘{print NF}’ abc.data | uniq

上面这个命令可以帮助我们快速看到文件有多少列,而且如果我们的文件列数还不一致,这个命令会把所有非重复的列数都打印到屏幕,可以看到,例子中abc.data这个数据有的行是4列,有的行是2列。下一章我们会对awk命令进行详解。

更多推荐

【linux】数据分析常用Linux小命令(四)——我就看看系列