grep、sed命令使用记录

一、grep —— 文本搜索工具

格式:grep [OPTIONS] PATTERN [FILE...]

OPTIONS:

-i:忽略大小写

--color:显示匹配字符高亮颜色

-v:取反

-o:只显示被匹配到的字符串

-c:只显示匹配结果行数

-n:显示匹配结果的同时在前面显示在该文件里对应的行数

-E:使用扩展正则表达式

-A 行数:显示匹配行数和匹配行数的后两行

-B 行数:显示匹配行数和匹配行数的前两行

-C 行数:显示匹配行数和匹配行数的前后两行

正则表达式:

元字符:

.:表示匹配任意单个字符

[]:匹配指定范围内的任意单个字符

[^]:匹配指定范围外的任意单个字符

字符集合:

[:space:]:空白字符

[:punct:]:标点符号

[:lower:]:小写字母

[:upper:]:大写字母

[:alpha:]:大小写字母

[:digit:]:数字

[:alnum:]:数字和大小写字母

匹配次数:

*:匹配其前面的字符任意(0次或多次)

.*:任意长度的任意字符

\?:匹配其前面的字符1次或0次

\{m,n\}:匹配其前面的字符至少m次,最多n次

位置锚定:

^:锚定行首,此字符后面的任意内容必须出现在行首

$:锚定行尾,此字符前面的任意内容必须出现在行尾

^$:空白行

单词锚定:

\<:其后面的任意字符必须作为单词的首部出现

\>:其前面的任意字符必须作为单词的尾部出现

\(\):分组

example:\(ab\)*:可以匹配任意个ab

后向引用:

\1:引用第一个左括号以及与之对应的右括号所包含的所有内容(前面匹配到什么,后面就引用什么)

\2:引用第二个左括号

\3:引用第三个左括号

...

example:从/etc/inittab文件中找出包含0-9后面跟任意字符串以0-9结尾的行(\1引用[0-9]);

grep ‘\([0-9]\).*\1$‘ /etc/inittab

扩展正则表达式:grep -E 或 egrep

字符匹配:

.

[ ]

[^]

次数匹配:

*:匹配其前面的字符任意(0次或多次)

?:匹配其前面的字符1次或0次

+:匹配其前面的字符至少1次

{m,n}:匹配其前面的字符至少m次,最多n次

位置锚定:

^

$

\<

\>

分组:()

\1,\2,\3,...

|:或

example:A|abc,匹配A或者abc

二、sed —— Stream EDitorsed(流编辑器)

格式:sed [OPTIONS] ‘AddressCommand‘ file ...

OPTIONS:

-n:静默模式,不再默认显示模式空间中的内容

-i:直接修改原文件

-e script -e script:可以同时执行多个脚本

-f file:指定文件脚本

-r:表示使用扩展正则表达式

Address:

1、StartLine,EndLine

比如1,100

$:最后一行

$-1:倒数第二行

2、/RegExp/

/^root/——>以root开头的行

3、/pattern1/,/pattern2/

第一次被pattern1匹配到的行开始,到第一次被pattern2匹配到的行结束,这中间的所有行

4、LineNumber

指定的行

5、StartLine,+N

从StartLine开始,向后的N行

Command:

d:删除符合条件的行

p:显示符合条件的行

a \string:在指定的行后面追加新行,内容为string

example:sed ‘/^\//a \# hello\n# test‘ /etc/fstab——>在/开头的行后添加hello和test两行

\n:换行

i \string:在指定的行前面追加新行,内容为string

r file:将指定的文件跟内容添加到符合条件的行处

example:sed ‘2r /etc/issue‘ /etc/fstab——>将/etc/issue的内容添加到/etc/fstab文件的第二行后

w file:将指定范围内的行另存到指定的文件中

s/pattern/string/修饰符:查找并替换,默认只替换每行中第一次被模式匹配到的字符串

加修饰符:

g:全局替换

i:忽略大小写

&:引用模式匹配到的整个字符串

example:

sed ‘s/l..e/&r/g‘ file——>把匹配到的用&引用到后面

sed ‘s/\(l..e\)/\1r/g‘ file

sed ‘s/l\(..e\)/L\1/g‘ file

时间: 2024-10-01 05:15:41

grep、sed命令使用记录的相关文章

grep sed命令总结

我们经常会遇到从一个文件中查找某些信息或从一个日志文件中查找信息的处理文本文件的需求,本文介绍一下linux中处理文本工具的三剑客之中的grep和sed,在介绍之前,先介绍一下正则表达式: 正则表达式由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或通配的功能 其中,基本正则表达式的元字符可以分为以下几种: 匹配字符: .:匹配任意单个字符 []:匹配指定范围内的任意单个字符 [^]:匹配指定范围外的任意单个字符 匹配次数:用在要指定其出现的次数的字符的后面,

find/pg/grep/sed/awk命令

find pathname -options [-print -exec -ok ...] -print: find命令将匹配的文件输出到标准输出. 当前目录下查找文件权限位为 7 5 5的文件 $ find . -perm 755 -print 当前目录及子目录中查找文件名以一个大写字母开头的文件 $ find . -name "[A-Z]*" 希望在系统根目录下查找更改时间在 5日以内的文件 $ find / -mtime -5 -print 为了在/var/adm目录下查找更改时

grep命令与sed命令

在Linux系统中有三款被称为文本处理三剑客的文本处理工具:grep,sed,awk.这三款工具在处理文本文件时都很强大,下面就先介绍一下grep和sed. grep命令; grep可以根据用户指定的模式或正则表达式把所文本中匹配到的行打印到屏幕上. grep用法: grep [OPTIONS]  PATTERN  [FILE...] 常用选项: -i  --ignore-case  #忽略字符大小写的差别: -o:仅显示匹配到的字符串本身: -E  --extended-regexp :支持扩

Shell学习:grep, sed, awk命令的练习题

文件:datafileSteve Blenheim:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300Betty Boop:245-836-8357:635 Cutesy Lane, Hollywood, CA 91464:6/23/23:14500Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400Norma Corder

cut\grep\awk\sed命令详解

cut\grep\awk\sed命令详解 1.cut命令详解及实例 (1)作用:提取文件中指定的列 语法格式:cut  选项  文件名   (2)选项作用:      -d 分隔符     按照指定的分割符进行分割      -f 列号       指定提取第几列      -c 字符范围  不依赖分割符来分割,而是通过字符范围进行字段提取      -b 字节数     以字节为单位进行分割.    (3)cut实际应用案例. 例1:cut的-d和-f选项的使用,列出/etc/passwd里面

grep、awk、sed命令详解2

grep.awk.sed命令详解 上一篇对grep.awk.sed命令的基本参数做了介绍,这一篇写一些例子. 1.分析access.log日志内,当天访问次数最多的10个页面,并且按降序排列. # cat access.log|awk -F ' ' '{print $7}'|sort|uniq -c|sort -nr|head -10 2.获取访问最高的10个IP地址. # cat access.log|awk -F ' ' '{print $1}'|sort|uniq -c|sort -nr|

grep/sed/awk命令查看指定时间段的日志

*grep命令 今天遇到研发要求查询定时任务(elastic-job)在14:00-14:40的日志,使用grep命令很方便: 命令: grep '时间' '日志文件名 ' 1.例如查询2020-02-19 14:10到2020-02-19 14:15区间的日志 grep "2020-02-19 14:1[0-5]" dubbo-elastic-job.log 查询日志时间正好截至2020 02-19 14:15 2.例如查询当天10点到11点的日志 grep "2020-0

Linux学习笔记之grep命令及sed 命令相关选项

#grep  强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 根据模式,搜索文本 ,并将符合模式的文本行显示出来,常与正则表达式相结合使用. [[email protected] ~]# grep --h 用法: grep [选项]... PATTERN [FILE]... 在每个 FILE 或是标准输入中查找 PATTERN. 默认的 PATTERN 是一个基本正则表达式(缩写为 BRE). 例如: grep -i 'hello world' menu.h main.c

LINUX 下 find grep sed awk 的常见基本用法特点

LINUX 下 find grep sed awk 的常见基本用法特点 只为让自己具有更高的水准,这就开始了长达6个月的小白进阶路! 这几天学习linux基础命令有点犯蒙,尤其是对文件查找这块.所有我想把一些我觉得常用的实用的参数项总结下来,大神勿喷哈... 不到之处请大家指教,小女子在此谢过了. 一.find:命令用于查找文件系统中指定的文件,其命令格式为: 1.find pathname -options [ -print  -exec  -ok ... ] (1)find 命令的参数: p