Linux三剑客(grep sed awk)学习笔记

参考:grep命令 一 文本搜索工具

一、grep

grep(global search regular expression and print out the line)

作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行。

grep [OPTIONS] PATTERN [FILE...]
grep root /etc/passwd
grep "$USER" /etc/passwd
grep '$USER' /etc/passwd
grep `whoami` /etc/passwd  是反单引号``不是单引号!!!
[root@VM_0_13_centos ~]# whoami
root
[root@VM_0_13_centos ~]# grep `whoami` /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@VM_0_13_centos ~]# grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

$()和 ` `  :

在 bash shell 中,$( ) 与` ` (反引号) 都是用来做命令替换用(commandsubstitution)的。

例如   version=$(uname -r)和version=`uname -r`都可以是version得到内核的版本号

各自的优缺点:
1. `  ` 基本上可用在全部的 unix shell 中使用,若写成 shell script ,其移植性比较高。但反单引号容易打错或看错。

2. $()并不是所有shell都支持。

基本使用

grep [option] pattern filename:

    pattern如果是表达式或者超过两个单词的, 需要用引号引用。

    可以是单引号也可双引号, 区别是单引号无法引用变量而双引号可以。


grep test *file
    在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的行,并打印出该字符串的行

 pattern单双引号区别:

[root@VM_0_13_centos ~]# grep '$USER' /etc/passwd
[root@VM_0_13_centos ~]# grep "$USER" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

 

常用【OPTIONS】 

  -E :开启扩展(Extend)的正则表达式。
 
  -i :忽略大小写(ignore case)。
 
  -v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。
 
  -n :显示行号。
 
  -w :被匹配的文本只能是单词,而不能是单词中的某一部分
 
  -c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。
 
  -o :只显示被模式匹配到的字符串。
 
  --color :将匹配到的内容以颜色高亮显示。
 
  -A  n:显示匹配到的字符串所在的行及其后n行,after
 
  -B  n:显示匹配到的字符串所在的行及其前n行,before
 
  -C  n:显示匹配到的字符串所在的行及其前后各n行,context

基本正则表达式 

匹配字符

    . :任意一个字符。

    [abc]:
        表示匹配一个字符,这个字符必须是abc中的一个。

    [a-zA-Z]:
        表示匹配一个字符,这个字符必须是a-z或A-Z这52个字母中的一个。

    [^123]:
        匹配一个字符,这个字符是除了1、2、3以外的所有字符。


匹配次数

    \{m,n\}:
        匹配其前面出现的字符至少m次,至多n次。
    \?:
        匹配其前面出现的内容0次或1次,等价于\{0,1\}。
    *:
        匹配其前面出现的内容任意次,等价于\{0,\},所以 ".*" 表述任意字符任意次,即无论什么内容全部匹配。


匹配位置

    ^:
        锚定行首

    $:
        锚定行尾。技巧:"^$"用于匹配空白行。

    \<:
        锚定单词的词首。如"\blike"不会匹配alike,但是会匹配liker

    \>:
        锚定单词的词尾。如"\blike\b"不会匹配alike和liker,只会匹配like

    \b:
        边界符,如:'\bgrep\b'只匹配grep

扩展的(Extend)正则表达式 

注意要使用扩展的正则表达式要加-E选项,或者直接使用egrep


egrep = grep -E 可以使用基本的正则表达外, 还可以用扩展表达式。


扩展表达式:
    +
        匹配一个或者多个先前的字符, 至少一个先前字符

    ?
        匹配0个或者多个先前字符

    a|b|c
        匹配a或b或c

    ()
        字符组, 如: love(able|ers) 匹配loveable或lovers

    (..)(..)\1\2
        模板匹配,\1代表前面第一个模板,\2代第二个括弧里面的模板

    x{m,n} = x\{m,n\}

    * :和基本正则表达式一样

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值