超实用,Linux中查看文本的小技巧
日常开发中,我们经常需要在服务器上进行各种文本,日志的查看操作,本文主要对常用的文本,日志查看技巧进行了一番总结和归纳,方便大家收藏起来后续查看使用:
tail命令查看日志信息
实时监控日志:
tail -f filename
实时监控10行日志信息:
tail -10f filename
查看日志尾部的最后100行日志信息:
tail -n filename
查看日志100行之后的日志信息:
tail -n + filename
head命令查看文本信息
查看文本开始的头100行信息:
head -n filename
查看文本最后100行信息以上的内容
head -n - filename
cat命令查看文本信息
查看全部文本内容
cat filename
查看文本的中间某些行范围之间的内容,例如说查看文本文件100-120行之间的内容:
cat -n filename |tail -n +|head -n
不过使用个人不是太喜欢使用这种命令来进行文本的定位查看,因为查看起来过于麻烦,文章下边会有更加简便的命令操作。
tac查看文本信息
和cat命令有点相反,cat命令更多的是从头部往尾部的顺序展现文本内容,而tac命令正好是从文本的尾部往头部展现日志内容
tac filename
例如说,我们通过cat命令和tac命令同时来查看一段相同的内容:

通过不同命令来展示文本,会发现文本的内容顺序有所相反。
搜索文本内容
grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep命令的常用方式:
在多个文件中查找:
grep "match_pattern" file_1 file_2 file_3 ...
标记匹配颜色 --color=auto 选项:
grep "match_pattern" file_name --color=auto //【这里的color项可以根据文档说明进行选择always,never,auto三种】
输出除之外的所有行 -v 选项:
grep -v "match_pattern" file_name
使用正则表达式 -E 选项:
grep -E "[1-9]+"
只输出匹配到的内容选项:
grep -o -E "[a-z]+." line
统计文件或者文本中包含匹配字符串的行数 -c 选项:
grep -c "text" file_name
输出包含匹配字符串的行数 -n 选项:
grep "text" -n file_name
在了解了grep命令能完成的功能点之后,我们可以在实际工作中灵活运用。
有些时候我们也会遇到一些希望查看某个时间段日志信息的需要,这个时候可以利用grep这条命令来实现这个功能,例如说希望查看2019-08-06 22点这一个小时以内的日志信息,那么可以输入以下命令:
grep '2019-08-06 22' filename

这样可以快速定位到你所希望查看的信息范围。
由于grep命令是可以接收standard input的数据,因此我们通常可以借助管道命令符“ | ”的帮助,在一些标准输出进行中进行查找操作。
例如说,先将文件的内容读取出来,然后借助管道的帮助将内容转发给grep来进行内容过滤,如下边的这段命令:
cat log.file |grep -n '2019-08-06 22:43'

除了使用grep命令之外,也可以使用sed命令来实现相应的效果。
sed是一种非交互式的编辑器,sed会逐行处理文件(或输入),并将结果发送到屏幕。
可能对于新手来说,讲概念还不如直接来几个实操案例更为直接。
sed命令的常用方式:
只打印文件的第一行内容
sed -n '1p' filename
查看文件的第一行到第十行之间的内容
sed -n '1,10p' filename
删除第一行文本信息
sed '1d' filename
将文本里面的某些字符串进行替换
sed 's/希望替换的内容/被替换的内容/g'
例如:sed 's/1/one /g' filename 将1替换为one
在了解了sed命令的一些基础用法之后,我们可以在实际的工作场景中多次运用,从而强化自己对于sed命令的理解。
例如说,通过sed命令来进行日期范围的指定,例如说查看2019-08-06 22:43-22:44之间的日志记录:
sed -n '/2019-08-06 22:43/,/2019-08-06 22:44/p' filename

上边有说到使用head和tail命令一起来实现对于日志文件的某段内容查看,但是这样的操作实在是有点麻烦,不妨可以尝试使用sed命令来进行操作。
例如说,查看日志的第1-20行内容:
nl log.file | sed -n '1,10p'

利用more命令进行翻页查看
如果说希望查看的日志文件过大,那么可以通过使用more命令来进行分页查找,例如说设定每一页展示10条数据信息:
more - filename

通过使用more命令可以查看到每一页展示的数据,同时通过敲空格键会进行下一页的跳转。同时在窗口中也会显示当前所阅读的文本内容的基础进度。
说了那么多,我们不妨进行一些模拟的操作场景吧:
查看日志最后一次出现关键字'test'的日志记录
grep 'test' -A log.file | tail -n
这里需要了解到grep命令的几个参数含义:
- grep ‘name’ -A 10 显示匹配内容和后面的10行
- grep ‘name’ -B 10 显示匹配内容和前面的10行
- grep ‘name’ -C 10 显示匹配内容和前后面的10行
tail -n 11命令则是将当前显示的10行内容以及匹配的那一行内容展示出现
简单统计一份日志里面出现‘test’关键字的行数
相应命令:
grep 'test' ./log.file |wc -l
这里我们可以先将文本的内容进行输出到标准输出中,然后借助管道将数据信息传给wc命令进行统计。
wc命令常用的几个参数
-l 匹配的行数
-w 匹配的字数
-m 匹配的字符数目
linux里面对于文本信息的查看技巧实在是有太多了,远远不局限于我在文中所提及的这些,因此在实际的工作中我们还可以多多将有助于自己提升工作效率的技巧进行归纳和总结。
超实用,Linux中查看文本的小技巧的更多相关文章
- Linux 中查看网口流量的利器 -- sar
Linux 中查看网口流量的利器 -- sar 有这么一个小工具,通过它能够查看各个网口的IP报文流量统计. 利用sar命令,加上-n DEV参数,即可统计出所有网卡上的流量,在显示的第五和第六列 ...
- IDEA Intellij中vim插件使用小技巧
在 IDEA Intellij小技巧和插件 一文中简单介绍了一下IdeaVim插件.在这里详细总结一下这个插件在日常编程中的一些常用小技巧.供有兴趣使用这个插件,但对Vim还不十分熟悉的朋友参考.当然 ...
- 如何在Linux中查看所有正在运行的进程
如何在Linux中查看所有正在运行的进程 FROM:http://os.51cto.com/art/201101/244090.htm 进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系 ...
- Linux中查看文件编码
在Linux中查看文件编码可以通过以下几种方式:1.在Vim中可以直接查看文件编码:set fileencoding即可显示文件编码格式.如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱 ...
- 在Linux中查看文件的编码及对文件进行编码转换
如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8.下面介绍一下,在Li ...
- Linux中查看进程的多线程pstree, ps -L
Linux中查看进程的多线程 在SMP系统中,我们的应用程序经常使用多线程的技术,那么在Linux中如何查看某个进程的多个线程呢? 本文介绍3种命令来查看Linux系统中的线程(LWP)的情况:在我的 ...
- Linux中查看socket状态(转)
Linux中查看socket状态:cat /proc/net/sockstat #(这个是ipv4的) sockets: used 137 TCP: inuse 49 orphan 0 tw 3272 ...
- 如何在 Linux 中查看可用的网络接口
在我们安装完一个 Linux 系统后最为常见的任务便是网络配置了.当然,你可以在安装系统时进行网络接口的配置.但是,对于某些人来说,他们更偏爱在安装完系统后再进行网络的配置或者更改现存的设置.众所周知 ...
- 如何在 Linux 中查看进程占用的端口号【转】
对于 Linux 系统管理员来说,清楚某个服务是否正确地绑定或监听某个端口,是至关重要的.如果你需要处理端口相关的问题,这篇文章可能会对你有用. 端口是 Linux 系统上特定进程之间逻辑连接的标识, ...
随机推荐
- 字符串匹配Boyer-Moore算法:文本编辑器中的查找功能是如何实现的?---这应该讲的最容易懂的文章了!
关于字符串匹配算法有很多,之前我有讲过一篇 KMP 匹配算法:图解字符串匹配 KMP 算法,不懂 kmp 的建议看下,写的还不错,这个算法虽然很牛逼,但在实际中用的并不是特别多.至于选择哪一种字符串匹 ...
- scrapy基础知识之 parse()方法的工作机制思考:
1.因为使用的yield,而不是return.parse函数将会被当做一个生成器使用.scrapy会逐一获取parse方法中生成的结果,并判断该结果是一个什么样的类型: 2.如果是request则加入 ...
- 8.秋招复习简单整理之Spring面试一般问题
1.不同版本的Spring Framework有哪些主要功能? 2.什么是Spring Framework? Spring是一个轻量级的IOC和AOP容器框架,是为Java应用程序提供基础性服务的一套 ...
- jekyll搭建个人博客2
目录 个性化 jekyll目录结构 修改个人信息 修改头像 修改背景颜色 关于头像的效果 图片问题 域名 个性化 jekyll目录结构 个性化就是要对文件内容作出修改,使得博客外观发生变化,在修改文件 ...
- Communicating with the UI Thread_翻译
In the previous lesson you learned how to start a task on a thread managed by ThreadPoolExecutor. Th ...
- [WPF自定义控件库]了解WPF的布局过程,并利用Measure为Expander添加动画
1. 前言 这篇文章介绍WPF UI元素的两步布局过程,并且通过Resizer控件介绍只使用Measure可以实现些什么内容. 我不建议初学者做太多动画的工作,但合适的动画可以引导用户视线,提升用户体 ...
- Java编程思想:File类其他方法
import java.io.File; public class Test { public static void main(String[] args) { MakeDirectories.te ...
- java学习笔记(基础篇)—java数组
一:什么是数组,什么时候使用数组? 数组是用来保存一组数据类型相同的元素的有序集合,数组中的每个数据称为元素.有序集合可以按照顺序或者下标取数组中的元素. 在Java中,数组也是Java对象.数组中的 ...
- 【题解】危险的工作-C++
Description 给出一个数字N,N<=11.代表有N个人分担N个危险的工作. 每个人对应每个工作,有个危险值 每个人担任其中一项,问每个人危险值相加,最小值是多少. Input 第一行给 ...
- ISTQB TA - 边界值分析中三值测试法的注意事项
三值测试法的定义(中文版20150601大纲): 取一个不超过边界.一个在边界上.一个超过边界的值. 这三个值其实还有另外一种叫法,分别是内点.上点和离点. 内点:不超过边界的点 上点:在边界上的点 ...