linux-shell脚本命令之grep

[ grep简介: ]

grep是用来过滤含有特定字符的行

用法: grep ‘pattern‘ file

例如: grep ‘bbb‘ aaa.txt --color                     # 从文件aaa.txt中搜索关键词bbb, 并高亮显示。

[ 正则元字符: ]

grep可以结合正则表达式使用, 下面介绍一些常用的正则表达式过滤字符的用法。

1.  ^表示行开头

grep   ‘^bbb‘   aaa.txt  --color           
     # 从文件aaa.txt中查找以bbb开头的行。

2.  $表示行结尾

grep   ‘bbb$‘   aaa.txt  --color           
    # 从文件aaa.txt中查找以bbb结尾的行。

3.  .表示单个字符, 它可以匹配除换行符之外的所有字符。

grep   ‘bbb...‘   aaa.txt  --color         
      # 从文件aaa.txt中查找bbb后面含有三个字符的行, ‘点‘可以匹配空格。

4.  * 表示它前面的那个字符可以出现任意次

grep   ‘bbb.*‘   aaa.txt  --color         
      # 从文件aaa.txt中查找bbb后面有任意个字符的行。

5.  + 表示它前面的那个字符至少要出现一次

grep  -E  ‘bbb.+‘ aaa.txt --color              # 从文件aaa.txt中查找bbb后面至少会出现一个字符的行。

6.  ? 表示它前面的那个字符可以有也可以没有

grep -E ‘bbbc?‘ aaa.txt --color               # 从文件aaa.txt中查找存在bbb或bbbc的行。

注意: grep不支持 + 、? 这两个元字符, 如果想使用, 只能使用扩展的grep  (egrep 或 grep -E)

7.  [ ] 表示匹配一个字符, 出现在[ ]里面的字符都是或的关系

grep  ‘^[Bb]bb‘  aaa.txt  --color             # 从文件aaa.txt中查找以Bbb或bbb开头的行。

grep
‘[0-9]‘ aaa.txt --color                     # 从文件aaa.txt中查找含有数字的行

grep -P ‘\d‘ aaa.txt --color                     # 从文件aaa.txt中查找含有数字的行, -P表示使用perl的正则表达式

\d表示数字, \D表示非数字

\s表示空格或tab, \S表示不是空格或tab

\w表示任意字符(大小写字母、数字、下划线), \W表示不是字母、数字、下划线。

注意: ^ 出现在 [ ] 外面的话表示‘开头‘, 如果出现在 [ ] 里面的话表示‘否定‘

grep ‘^[^Bb]..‘ aaa.txt  --color               # 从文件aaa.txt中查找不是以B或b开头,
而且后面还有两个字符的行。

8.  \< 匹配单词的开头

grep ‘\<Tom‘ aaa.txt --color                  # 从文件aaa.txt中查找单词以Tom开头的行。

9.  \> 匹配单词的开头

grep ‘\>Tom‘ aaa.txt --color                 # 从文件aaa.txt中查找单词以Tom结尾的行。

10.  匹配某个单词, 而不是某个字符串的一部分

grep ‘\bTom\b‘ aaa.txt --color            # 从文件aaa.txt中查找含有单词Tom的行, 如果是aTomb之类的忽略掉。

11.  用\(\)做标签, 后面想引用就用\n (n是一个数字), \1表示第一个被引起来的

grep ‘\(tom\)...\1‘ aaa.txt --color        # 从文件aaa.txt中查找tom, 且它的后面有三个字符, 然后还有一个tom的行. 如: tomxxxtom

12.  \{n\} 表示前面的字符要出现n次

grep ‘tomx\{3\}‘ aaa.txt --color         # 从文件aaa.txt中查找tomx, x要出现3次, 如: tomxxx

grep ‘tomx\{3,\}‘ aaa.txt --color        # 从文件aaa.txt中查找tomx, x至少要出现三次, 如tomxxx 或 tomxxxx

grep ‘tomx\{3,4\}‘ aaa.txt --color      # 从文件aaa.txt中查找tomx,
x出现3次或4次, 如tomxxx 或 tomxxxx

linux-shell脚本命令之grep

时间: 2024-08-05 19:33:13

linux-shell脚本命令之grep的相关文章

linux 基础 shell脚本命令

#########shell脚本命令#### 1.diff diff      file file1             ####比较两个文件的不同 -c                         ####显示周围的行 -u                         ####按照一格式统一输出生成补丁 -r                         ####比较两个文件的不同 patch       file file.path       ####打补丁 -b      

Linux Shell脚本入门--cut命令

Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [[email protected] ~]# cut -d'分隔字符' -f fields <==用于有特定分隔字符 [[email protected] ~]# cut -c 字符区间 <==用于排列整齐的信息 选项与参数: -d :后面接分隔字符.与 -f 一起使用: -f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思: -c :以字符 (

《Linux Shell脚本攻略》 笔记 第二章:常用命令

<Linux Shell脚本攻略> 笔记 第二章:常用命令 1.cat cat -s //多个空白行压缩成一个 cat *.txt | tr -s '\n'   //移除空白行 cat -n //加行号 2.find 沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作. eg: find ./ ! -name "*.txt" -print [[email protected] program_test]# find ./  -type f -name "

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执

Linux shell脚本流程控制

博主搬家至51CTO,初来乍到,请多指教. 此次我们来通过实例解析Linux shell脚本流程控制 Linux shell脚本流程控制可分为三类:顺序执行,条件选择执行,循环执行 顺序执行:简单理解就是逐行执行脚本内容,逐行解读,逐行执行.(此处不做实例解析) 条件选择执行:可以理解为先进行某一条件的判断选择,再决定执行怎样的脚本内容.常见语句if case 条件选择语句:if if语句用法: 单分支 if 判断条件;then 条件为真的分支代码 fi 双分支 if 判断条件; then 条件

linux shell 管道命令(pipe)使用及与shell重定向区别

linux shell 管道命令(pipe)使用及与shell重定向区别 看了前面一节:linux shell数据重定向(输入重定向与输出重定向)详细分析 估计还有一些朋友是头晕晕的,好复杂的重定向了.这次我们看下管道命令了.shell管道,可以说用法就简单多了. 管道命令操作符是:"|",它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandard error 信息没有直接处理能力.然后,传递给下一个命令,作为标准的输入 st

Linux Shell脚本编程学习笔记和实战

http://www.1987.name/141.html shell基础 终端打印.算术运算.常用变量 Linux下搜索指定目录下特定字符串并高亮显示匹配关键词 从键盘或文件中获取标准输入 [read命令] 文件的描述符和重定向 数组.关联数组和别名使用 函数的定义.执行.传参和递归函数 条件测试操作与流程控制语句 获取时间日期格式和延时 [date.sleep命令] 内部字段分隔符IFS和脚本的调试DEBUG 显示.读取或拼接文件内容 [cat命令] 文件查找与打印文件列表 [find命令]

linux shell 脚本获取和替换文件中特定内容

1.从一串字符串中获取特定的信息 要求1:获取本机IP:menu.lst为系统镜象的IP配置文件,需要从中获取到本机IP信息(从文件获取信息) 1 timeout 1 2 default 0 3 4 title live 5 find --set-root /casper/vmlinuz 6 kernel /casper/vmlinuz boot=casper ignore_uuid showmounts ip=eth0,10.0.66.66,255.255.240.0,10.0.64.3 7

LINUX SHELL脚本攻略笔记[速查]

Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgrep shell数学运算 命令状态 文件描述符和重定向 cat 数组和关联数组 alias date 调试脚本 函数和参数 管道 读取命令输出 read 字段分隔符和迭代器 循环 比较和测试 find xargs tr md5sum sha1sum 对目录进行校验 sort uniq tempfile split bash变量匹配切分 exp

老李分享:《Linux Shell脚本攻略》 要点(八)

老李分享:<Linux Shell脚本攻略> 要点(八) 1.打印进程 [[email protected] program_test]# ps -e | head  PID TTY          TIME CMD    1 ?        00:00:03 init    2 ?        00:00:00 kthreadd    3 ?        00:00:00 migration/0    4 ?        00:00:00 ksoftirqd/0    5 ?