linux-grep-tail-find
如果在只是想匹配模式的上下几行,grep可以实现。
$grep -5 'parttern' inputfile //打印匹配行的前后5行
$grep -C 5 'parttern' inputfile //打印匹配行的前后5行
$grep -A 5 'parttern' inputfile //打印匹配行的后5行
$grep -B 5 'parttern' inputfile //打印匹配行的前5行
查看mysql慢日志中ip地址为192.168.0.10发送过来的SQL语句的后面三行
- tail -50 /usr/local/mysql/data/sql-slow.log |grep -3 '192.168.0.10'
匹配php错误日志中某一个字段
2,tail -100 /data/logs/php/php_error_5.3.log | grep "Memcache::get()";
查看某一个文件第5行和第10行
sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行。
========================================================================================
1、tail -f filename
说明:监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C。
2、tail -n 20 filename
说明:显示filename最后20行。
3、tail -r -n 10 filename
说明:逆序显示filename最后10行
========================================================================================
对日志记录做多次grep过滤输出,格式如下:
tail -f log | grep xxx | grep yyy
发现grep失效,无法做正确输出。google研究了一下,原因如下:
管道 | 是全缓冲的,一般来说buffer_size为4096,有些是8192。不管具体值多少,只有buffer_size满了,才会看到输出。
在操作里 >>file 这个操作也是全缓冲的。调整如下
tail -f log | grep --line-buffer xxx | grep --line-buffer yyy
结果输出正常。
grep当带上了 --line-buffer 的时候,每输出一行,就刷新一次。
在unix里,块设备和普通文件,以及管道都是全缓冲的。
对日志分析告警和实时监控可以考虑如下形式:
tail -f $LOGF | while read var
do
case "$var" in
...
...
esac
done
========================================================================================
标准unix/linux下的grep通过下面參数控制上下文
grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行
grep -B 5 foo file 显示foo及前5行
grep -A 5 foo file 显示foo及后5行
查看grep版本号的方法是
grep -V
========================================================================================
grep 后面带上-A -B -C 参数可以多显示几行内容
grep -A 5 可以显示匹配内容以及后面的5行内容
grep -B 5 可以显示匹配内容以及前面的5行内容
grep -C 5 可以显示匹配内容以及前后面的5行内容
$ cat size.txt
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345
$ cat size.txt | grep 'a022021'
a022021
$ cat size.txt | grep 'a022021' -C 2
m7187998
m7282064
a022021
a061048
m9324822
$ cat size.txt | grep 'a022021' -B 2
m7187998
m7282064
a022021
$ cat size.txt | grep 'a022021' -A 2
a022021
a061048
m9324822
========================================================================================
1.目录操作:
(1)cd (切换目录)
cd ~ 回到主目录
cd 回到主目录
cd .. 回到上层目录
cd - 回到刚才的目录
cd /var/spool/mail 绝对路径
cd ../mqueue 相对路径(由/var/spool/mail 转到/var/spool/mqueue这样写)
(2)pwd (显示当前目录)
pwd 显示当前目录
pwd -P 显示当前目录(不以连接文件的数据显示,而是显示正确的完整路径)
(3)mkdir (新建一个新目录)
mkdir -p test1/test2/test3 创建多层目录
mkdir -m 777 test2 新建权限777的目录
(4)rmdir (删除一个空目录)
rmdir test 删除空文件夹test
rmdir -p test1/test2/test3 删除test1/test2/test3
2.文件与目录管理
(1)查看文件目录(ls)
ls -a 列出全部文件,包括隐藏文件
ls -A 列出全部文件,包括隐藏文件,不包括.与..两个目录
ls -d 仅列出目录本身,不包括其中文件数据
ls -l 列出长串数据,包含文件属性与权限
ls -R 按文件容量大小排序
ls -t 按时间排序
ls --color=never 不显示颜色(always显示颜色,auto自动判断)
ls --full-time 以完整时间模式输出
(2)复制、删除与移动(cp,rm,mv)
cp -a /var/log/wtmp wtmp_test 将文件所有特性复制过去
cp /var/log/wtmp . 复制到当前目录
cp -i 若目标文件存在,则覆盖时先询问操作的进行
cp -p 连同文件属性一起复制
cp -r 目录的复制
cp -d 若源文件作为连接文件的属性,则复制连接文件属性而非连接文件本身
cp -s 复制成为符号连接文件
rm -i 互动模式,删除前询问用户是否操作
rm -f 忽略不存在的文件,不会出现警告信息
rm -r 递归删除
mv -f 如果目标文件存在,不会询问而直接覆盖
mv -i 如果目标文件存在,则询问是否覆盖
mv -u 如果目标文件存在,且source比较新,则覆盖
(3)取得路径文件名与目录名称
basename /etc/systemd/network 取得最后的文件名(network)
dirname /etc/systemd/network 取得目录名(/etc/systemd)
3.文件内容查阅
(1)直接查看文件内容
cat 由第一行开始显示内容
cat -A 完整显示,包含特殊字符
cat -b 列出行号(空白行不标行号)
cat -n 打印出行号(包括空白行)
tac 反向显示,与cat相反
nl 添加行号打印
nl -b a 打印出行号(包括空白行),类似cat -n
nl -b t 如果有空行,空的那行不列出行号
nl -n ln 行号在屏幕坐方显示
nl -n rn 行号在字段右方显示,不加0
nl -n rz 行号在字段右方显示,加0
nl -w 3 行号默认字段改为3位
(2)可翻页查看
more /etc/manpath.config 查看文件信息(空格翻页,enter键向下滚动一行,/字符串向下查询,:f立刻显示文件名及目前显示行数,b往回翻页,q离开)
less /etc/manpath.config 查看文件信息(空格/pageup上翻,pagedown下翻,/字符串向下查询,?字符串向上查询,n重复查询,N反向重复,q离开)
(3)数据选取
head -n 10 /etc/manpath.config 显示前10行(不加-n 10也是默认显示前10行)
head -n -10 /etc/manpath.config 显示前面所有行数,不包括后10行
tail -n 20 /etc/manpath.config 显示最后20行
tail -n +20 /etc/manpath.config 显示后面所有行数,不包括前20行
tail -f 持续检测行数,直到按下ctrl+c
(4)非文本文件
od -t a 默认字符输出
od -t c ASCII字符输出
od -t d 十进制输出(f浮点数,o八进制,x十六进制)
od -t oCc /etc/issue 八进制列出存储值与ASCII对照表
(5)修改文件时间或者创建新文件
touch test 新建一个新文件test
touch -a 修改访问时间
touch -c 仅修改文件时间,若文件不存在则不创建新文件
touch -m 修改mtime
touch -d "2 days ago" test test文件日期调整为两天前
touch -t 1503151820 test test文件时间调整为2015.3.15 18:20
4.默认权限与隐藏权限
umask 002 默认权限去除的是其他人权限的w权限
chattr +i test 设置test文件的隐藏属性(不能被删除、改名、写入添加数据,仅root用户可设置)
chattr +a test 设置test文件的隐藏属性(只能添加数据,不能删除、修改,仅root用户可设置)
chattr -a test 取消test文件的隐藏属性
lsattr test 显示test文件隐藏属性
file test 查看文件类型
5.命令与文件的查询
which ifconfig 找出ifconfig命令的完整文件名
whereis ifconfig 寻找ifconfig这个文件
locate ifconfig 寻找与ifconfig相关的文件
find /etc -mtime 3 3天前的一天之内改过的文件
find /etc -mtime -3 3天之内改过的文件(不包括第3天)
find /etc -mtime +3 3天之前改过的文件(不包括第3天)
find /etc -newer /etc/passwd 寻找/etc下比passwd日期新的文件并列出
find / -nouser 寻找系统中不属于任何人的文件
find /home -user root 寻找/home下属于root的文件
find /etc -name test 寻找/etc下名为test的文件
find / -size +100k 寻找系统中大于100k的文件
find / -size +100k -exec ls -l {} \; 将上面找到的文件用ls -l列出来
linux-grep-tail-find的更多相关文章
- linux grep 从入门到精通
linux grep 从入门到精通 一.初级 搜索日志 grep "186" catalina.out 在新输出日志中监听固定字符串 tail -f catalina.out | ...
- linux grep命令
linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressio ...
- PHP实现linux命令tail -f
PHP实现linux命令tail -f 今天突然想到之前有人问过我的一个问题,如何通过PHP实现linux中的命令tail -f,这里就来分析实现下. 这个想一想也挺简单,通过一个循环检测文件,看文件 ...
- linux grep命令详解
linux grep命令详解 简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来 ...
- 如何使用Unix/Linux grep命令——磨刀不误砍柴工系列
http://man.linuxde.net/grep ---------------------------------------------------- 如何使用Unix/Linux gre ...
- linux grep命令总结
风生水起善战者,求之于势,不责于人,故能择人而任势. 博客园 首页 新随笔 联系 订阅 管理 posts - 791, comments - 394, trackba ...
- Linux grep命令详解[备份]
linux grep命令 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressi ...
- linux grep命令(linux在文件中搜索内容)
转自:https://www.cnblogs.com/end/archive/2012/02/21/2360965.html linux grep命令 1.作用Linux系统中grep命令是一种强大的 ...
- linux grep 搜索查找
查找关键字在哪些文件夹中的哪些文件中出现(只列出文件名称): grep -l 15386257298 */* 查找关键字在哪些文件夹中的哪些文件中出现(列出文件名称+关键字): grep -o 153 ...
- linux grep 查询多行的方法
linux grep 查询多行的方法 经常查询 git log 中使用的方法, 如下 git log |grep "xxxx" 如果想查询多行的话, 就有些尴尬, 如果想查询多行的 ...
随机推荐
- Sublime Text 文件路径补全
最有效和好用的是AutoFileName插件,效果如下: 表格编辑 Table Editor相当好用,安装好后参考自述文件(Preferences --> Package Settings -- ...
- CUDA编程之快速入门
CUDA(Compute Unified Device Architecture)的中文全称为计算统一设备架构.做图像视觉领域的同学多多少少都会接触到CUDA,毕竟要做性能速度优化,CUDA是个很重要 ...
- python3 log 日志记录
在调试的过程中,很多地方需要用到日志 如下 import logging LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s&qu ...
- 居于U2000手机管理光猫,小区运营商FTTH光猫注册神器,MA5680T手机管理,自动添加光猫
此软件居于U2000开发,需要U2000管理支持 主要功能: 光猫查看->上线情况.下线原因.下线时间.光猫重启.光模块发送功能.接收功能.温度 Radius诊断->用户基本信息.拨打电话 ...
- TCP是如何保证可靠传输的
TCP 协议如何保证可靠传输 一.综述 1.确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传. 2.数据校验 3.数据合理分片和排序: UDP:IP数据报大于1500字节 ...
- 23命令模式Command
一.什么是命令模式 Command模式也叫命令模式 ,是行为设计模 式的一种.Command模式通过被称为 Command的类封装了对目标对象的调用行为以及调用参数. 二.命令模式的应用场景 在面向对 ...
- Thread线程中断相关方法
public class Demo { /* * 线程中断相关方法 * ---------------------------------------------------------------- ...
- Oracle创建表空间以及用户语句
记录一下常用的语句,便于以后使用… create tablespace TABLESPACENAMEdatafile 'E:\Data\ORACLEDATA\XXX.dbf' size 200M au ...
- How not to alienate your reviewers, aka writing a decent rebuttal?
[forwarded from https://nebelwelt.net/blog/20180704-rebuttal.html] Assuming you have given everythin ...
- C#WinForm窗体内Panel容器中嵌入子窗体、程序主窗体设计例子
C#WinForm父级窗体内Panel容器中嵌入子窗体.程序主窗体设计例子 在项目开发中经常遇到父级窗体嵌入子窗体所以写了一个例子程序,顺便大概划分了下界面模块和配色,不足之处还望指点 主窗体窗体采用 ...