Linux Shell 学习笔记-grep

相关知识

more

命令格式: more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file … ]
命令功能: 按页来查看文件的内容,还支持直接跳转行等功能命令参数

  • +n 从笫n行开始显示
  • -n 定义屏幕大小为n行
  • +/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
  • -c 从顶部清屏,然后显示
  • -d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
  • -l 忽略Ctrl+l(换页)字符
  • -p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
  • -s 把连续的多个空行显示为一行
  • -u 把文件内容中的下画线去掉

find | xargs

find格式

命令格式:find filename 【选项】【-print -exec -ok …】
选项参数:
1、-name :按照文件名称查找,可以提前cd定位,也可以在find命令最前面加上待查找路径注意需要写上文件类型
2、-type:按类型查找文件d: 目录文件    b:块设备文件  c:字符设备文件  f:普通文件
3、-mtime -n +m:  按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前
4、 -perm 777:按照文件的权限查找

xargs

什么是xargs:x 是加减乘除的乘号,args 则是 arguments (参数) 的意思,所以说,就是在产生某个指令的参数的意思;
会使用 xargs 的原因是, 很多指令其实并不支持管线命令,因此我们可以透过 xargs 来提供该指令引用 standard input 之用。

find 与 xargs 的组合

  • 和grep组合使用,搜索文件内容
    find ./ -type f | xargs grep words
    注意:如果不使用xargs,命令依旧可以执行,但是grep的是文件的名字,而不是文件的内容。
  • rm组合使用
    find ./ -type f | xargs rm -rf words.txt
  • 消除文件名空格的影响 find -print0 | xargs -0

cat > <<EOF

linux shell下常用输入输出操作符是:

  1. 标准输入 (stdin) :代码为 0 ,使用 < 或 << ; /dev/stdin -> /proc/self/fd/0 0代表:/dev/stdin
  2. 标准输出 (stdout):代码为 1 ,使用 > 或 >> ; /dev/stdout -> /proc/self/fd/1 1代表:/dev/stdout
  3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ; /dev/stderr -> /proc/self/fd/2 2代表:/dev/stderr

文件access time,modify time ,change time

linux系统为每个文件保存了3个时间,分别是Access time(访问时间),Modify time(修改时间),Change time(状态改变时间)。

  • 修改时间:文件内容最后一次修改的时间,我们经常用的ls -l命令显示出来的文件时间就是这个时间。

  • 访问时间:对文件进行一次读操作,它的访问时间就会改变。例如cat,more等操作,但是之前的stat还有ls命令对atime是不会有影响的。

  • 状态时间:当文件的状态被改变的时候,状态时间就会随之改变。例如当使用chmod、chown等改变文件属性的操作是会改变文件的ctime。

查看文件时间

stat命令

文件夹权限

r(read contents in directory)r权限顾名思义,读取文件夹内容的权限,即读取文件夹中文件名列表的权限
w(modify contents of directory)w权限则是修改文件夹的内容了,即修改文件夹中的文件名列表,我们可以增加文件夹中新文件,删除文件,修改文件名,移动文件。
x(access directory)x权限在文件夹上就不是可执行权限了,而是代表用户能否进入该目录。

grep

正则表达式种类

  • Basic Regular Expressions(默认)
    只支持“*”。
    ? , + , { , | , ( , ) 默认都是不支持的。通过“\”转义才能支持。

  • Extended Regular Expressions
    “.”:匹配任何一个字符
    “^”:行的开始
    “$”:行的结束
    “?”:最多一次。
    “*”: 零或多次
    “+”: 一次或多次
    {n}:n次
    {n,}:n次或多于n次
    {n,m}:最少n次,最多m次

字符描述
\cx匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。
\f匹配一个换页符。等价于 \x0c 和 \cL。
\n匹配一个换行符。等价于 \x0a 和 \cJ。
\r匹配一个回车符。等价于 \x0d 和 \cM。
\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 Unicode 正则表达式会匹配全角空格符。
\S匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t匹配一个制表符。等价于 \x09 和 \cI。
\v匹配一个垂直制表符。等价于 \x0b 和 \cK。
  • Perl regular expression

grep命令

常见选项:

  • -i:忽略搜索字符串的大小写
  • -v:取反,即输出不匹配的那些文本行
  • -n:输出行号
  • -l:输出能够匹配模式的文件名,相反的选项为-L
  • -q:静默输出
  • -r: 递归查询文件夹
  • -c:计算匹配成功的行数
  • -e:该选项加上正则表达式就是一个需要匹配的模式
  • -o:只输出匹配到的文本部分
  • –include:指定需要搜索的文件
  • –exclude:排除需要搜索的文件
  • –exclude-dir:排除需要搜索的目录
  • -Z:设定输出的文本之间以’\0’作为分隔符,而不是新行

经典场景

管道内容过滤

通过管道过滤内容:

 cat temp.file | grep 'hello*'

通过find过滤文件名称、类型,grep过滤文件内容:

find ./ -type f | xargs grep words

过滤进程:

ps aux | grep java | grep -v grep
文件夹查找

递归查找文件夹下所有文件:

grep -r 'rs' ./
grep -d recurse  'rs' ./

递归查找文件夹下所有文件,输出文件名:

grep -lr 'rsd' ./

递归查找文件夹下所有的文件,输出匹配行号:

 grep -nr 'rsd' ./
输出匹配的上下文

-A n 后n行,A记忆为(After)
-B n 前n行,B记忆为(Before)
-C n 前n行,后n行,C记忆为(Center)

grep 'rs' words.txt -A 2
grep 'rs' words.txt -C 2
统计匹配的次数

统计的是rs出现的次数,而不是行的数目。

grep 'rs' words.txt -c
排除查询文件

排除文件夹:

grep -r  --exclude-dir={myproject,dps,oneFlink} 'rsd' ./

排除文件:

 grep -r --exclude=*.png 'rsd' ./
支持正则表达式

egrep或者grep -E

匹配多个条件中一个

匹配rsd或者rsrs都可以:

grep -rE --exclude-dir={myproject,dps} --exclude=*.png -e 'rsd' -e 'rsrs' ./
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值