通配符

通配符

                                        含义
        *         匹配任意长度的字符
        ?         匹配任意单个字符
        [ ]                 匹配指定范围内中任意单个字符
        [^]         匹配除括号内的范围的单个字符

[a-z], [A-Z], [0-9], [a-z0-9]

[[:upper:]]:所有大写字母

[[:lower:]]:所有小写字母

[[:alpha:]]:所有字母

[[:digit:]]:所有数字

[[:alnum:]]:所有的字母和数字

[[:space:]]:所有空白字符

[[:punct:]]:所有标点符号

grep

语法

grep [选项]   过滤条件   文件名

选项:

-n------------显示行号

-v-------------取反,意思是匹配除过匹配内容之外的内容

-i--------------忽略大小写

-E-------------开启扩展正则

-o-------------只显示匹配到的内容

举例

1.显示/etc/passwd文件下的两位数或三位数

[root@group7 home]# grep -E '\<[0-9]{2,3}\>' /etc/passwd

2.找出/etc/passwd下,以P或p开头的内容

写法一:
[root@group7 home]# grep -i -E '^(P|p)' /etc/passwd
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
写法二:
[root@group7 home]# grep -i '^[P|p]' /etc/passwd
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

3.找出ifconfig命令的ip地址

[root@group7 home]# ifconfig ens33 | grep 'inet .* netmask' |grep -o '\([0-9]\{1,3\}.\)\{3\}.[0-9]\{1,3\}'

4.echo 输出一条绝对路径,用grep找出其绝对路径

[root@group7 home]# echo /var/log/dmesg | grep -E -o '[^/].*/?$'
var/log/dmesg

sed

语法

sed  [选项]  地址定界   编辑的内容   文件名

选项:

-n-----------不输出模式空间的内容到屏幕,常与-p一起使用

-e------------多次编辑

-i-------------将编辑的内容修改到文件

-r-------------支持扩展正则

内置命令

用于对文件进行操作,如增删改查

     内置命令符号                                   解释
            a 添加,在指定行后面添加内容
            i               添加,在指定行前面添加内容
            d 删除匹配行
            i 将修改内容保存到文本
 s/正则/替换内容 /g

匹配正则的内容,然后替换

            p                打印匹配行的内容,常与-n一起使用

匹配范围

        范围                                 解释
        空地址 匹配全文
        单个地址 匹配指定行
        /xxxxx/ 匹配指定的内容
        范围区间 a,b #a到b行;a,+b #a行向下b行 ;
        步长 1~2,表示奇数行;2~2表示偶数行

举例

[root@nebulalinux03 ~]# cat sed.txt
northwest NW Charles Main 4.0 .99 3 35
western WE Sharon Gray 8.3 .97 5 23
southwest SW Lewis Dalsass 4.7 .8 2 19
southern SO Suan Chin 5.1 .96 4 15
southeast SE Patricia Hemenway 4.0 .7 4 16
eastern EA TB Savage 7.7 .84 5 22
northeast NE AM Main Jr. 5.1 .96 3 13
north NO Margot Weber 3.4 .87 5 8
central CT Ann Stephens 2.7 .94 5 14

1.输出文件第二行和第三行内容

[root@group7 home]# sed -n '2,3p' sed.txt
western    WE Sharon  Gray      8.3 .97 5 23
southwest  SW Lewis   Dalsass   4.7 .8  2 19

2.过滤出含有west的行

[root@group7 home]# sed -n '/west/p' sed.txt
northwest  NW Charles Main      4.0 .99 3 35
western    WE Sharon  Gray      8.3 .97 5 23
southwest  SW Lewis   Dalsass   4.7 .8  2 19

3.删除含有north的行

[root@group7 home]# sed '/north/d' sed.txt
western    WE Sharon  Gray      8.3 .97 5 23
southwest  SW Lewis   Dalsass   4.7 .8  2 19
southern   SO Suan    Chin      5.1 .96 4 15
southeast  SE Patricia Hemenway 4.0 .7  4 16
eastern    EA TB      Savage    7.7 .84 5 22
central    CT Ann     Stephens  2.7 .94 5 14

4.将文件中的central替换成earth

[root@group7 home]# sed 's/central/earth/g' sed.txt
northwest  NW Charles Main      4.0 .99 3 35
western    WE Sharon  Gray      8.3 .97 5 23
southwest  SW Lewis   Dalsass   4.7 .8  2 19
southern   SO Suan    Chin      5.1 .96 4 15
southeast  SE Patricia Hemenway 4.0 .7  4 16
eastern    EA TB      Savage    7.7 .84 5 22
northeast  NE AM      Main Jr.  5.1 .96 3 13
north      NO Margot  Weber     3.4 .87 5 8
earth    CT Ann     Stephens  2.7 .94 5 14

5.在southeast行后添加hello

[root@group7 home]# sed '/southeast/a hello' sed.txt
northwest  NW Charles Main      4.0 .99 3 35
western    WE Sharon  Gray      8.3 .97 5 23
southwest  SW Lewis   Dalsass   4.7 .8  2 19
southern   SO Suan    Chin      5.1 .96 4 15
southeast  SE Patricia Hemenway 4.0 .7  4 16
hello
eastern    EA TB      Savage    7.7 .84 5 22
northeast  NE AM      Main Jr.  5.1 .96 3 13
north      NO Margot  Weber     3.4 .87 5 8
central    CT Ann     Stephens  2.7 .94 5 14

6.在southeast行前添加hello

[root@group7 home]# sed '/southeast/i hello' sed.txt
northwest  NW Charles Main      4.0 .99 3 35
western    WE Sharon  Gray      8.3 .97 5 23
southwest  SW Lewis   Dalsass   4.7 .8  2 19
southern   SO Suan    Chin      5.1 .96 4 15
hello
southeast  SE Patricia Hemenway 4.0 .7  4 16
eastern    EA TB      Savage    7.7 .84 5 22
northeast  NE AM      Main Jr.  5.1 .96 3 13
north      NO Margot  Weber     3.4 .87 5 8
central    CT Ann     Stephens  2.7 .94 5 14

7.使用sed过滤出ifconfig的ip

写法一:
[root@group7 home]# ifconfig ens33 | sed -n '2p'  | sed -rn 's#.*inet(.*)netmask.*#\1#p'192.168.75.130
写法二:
[root@group7 home]# ifconfig ens33 | sed -n '2p' | sed 's/.*inet //' | sed 's/netmask.*//'
192.168.75.130

sed高阶用法

h:把模式空间中的内容覆盖至保持空间中;

H:把模式空间中的内容追加至保持空间中;

g:把保持空间中的内容覆盖至模式空间中;

G:把保持空间中的内容追加至模式空间中;

x:把模式空间中的内容与保持空间中的内容互换;

n:覆盖读取匹配到的行的下一行至模式空间中;

N:追加读取匹配到的行的下一行至模式空间中;

d:删除模式空间中的行;

D:删除多行模式空间中的所有行;

示例:

sed -n 'n;p' FILE:显示偶数行;

sed '1!G;h;$!d' FILE:逆序显示文件的内容;1!G:第1行不执行“G”命令,从第2行开始执行。$!d:最后一 行不删除(保留最后1行)

sed ’$!d' FILE:取出最后一行;

sed '$!N;$!D' FILE:取出文件后两行;

sed '/^$/d;G' FILE:删除原有的所有空白行,而后为所有的非空白行后添加一个空白行;         sed 'n;d' FILE:显示奇数行;

sed 'G' FILE:在原有的每行后方添加一个空白行;

举例

1.显示/etc/passwd文件中的偶数行,并显示行号

[root@group7 home]# sed -n 'n;=;p' /etc/passwd

2.为文件/etc/passwd文件每行开头添加#

[root@group7 home]# sed '1,$s/\(.*\)/#\1/g' /etc/passwd

awk

语法

awk 参数  模式  ‘{动作}’  文件

awk内置变量

$0 -----------表示完整的输入记录

$n-------------指定分隔符后,当前的第几个字段

FS-------------字段分隔符,默认为空格

NF--------------分割后,当前行有多少个字段

NR--------------当前行数

FNR------------输入的文件的行数

FS----------------输入分割符,默认是空格

OFS--------------输出分隔符

RS----------------输入换行符,指定后,按照指定的符号进行换行输出

ORS-------------输出分隔符,指定后,按照指定的符号换行

awk必须外层 单引号,内层双引号

        awk参数

-F ------------指定分隔符,默认为空格

-v<变量=值>--------------在开始执行前为变量值

-f--------------从脚本文件中读取awk命令

举例

vim sed.txt
northwest  NW Charles Main      4.0 .99 3 35
western    WE Sharon  Gray      8.3 .97 5 23
southwest  SW Lewis   Dalsass   4.7 .8  2 19
southern   SO Suan    Chin      5.1 .96 4 15
southeast  SE Patricia Hemenway 4.0 .7  4 16
eastern    EA TB      Savage    7.7 .84 5 22
northeast  NE AM      Main Jr.  5.1 .96 3 13
north      NO Margot  Weber     3.4 .87 5 8
central    CT Ann     Stephens  2.7 .94 5 14
~

1.显示文件的第五行

[root@group7 home]# awk 'NR==5'  sed.txt
southeast  SE Patricia Hemenway 4.0 .7  4 16

2.显示文件所有内容

[root@group7 home]# awk '{print $0}' sed.txt

3.显示文件2到5行内容,并且添加行号

[root@group7 home]# awk 'NR==2,NR==5 {print NR,$0}' sed.txt
2 western    WE Sharon  Gray      8.3 .97 5 23
3 southwest  SW Lewis   Dalsass   4.7 .8  2 19
4 southern   SO Suan    Chin      5.1 .96 4 15
5 southeast  SE Patricia Hemenway 4.0 .7  4 16

4.显示文件的第一列,倒数第二列和最后一列

[root@group7 home]# awk '{print $1,$(NF-1),$NF}' sed.txt
northwest 3 35
western 5 23
southwest 2 19
southern 4 15
southeast 4 16
eastern 5 22
northeast 3 13
north 5 8
central 5 14

5.用awk取出ip地址信息

[root@group7 home]# ifconfig ens33 | awk 'NR==2' | awk '{print $2}'
192.168.75.130

6.取出/etc/passwd文件下的用户名和最后的名称,并且在中间加@符号

写法一:
[root@group7 home]# awk -F: -v OFS="#" '{print $1,$NF}' /etc/passwd
写法二:
[root@group7 home]# awk -F: '{print $1"#"$NF}' /etc/passwd

7.显示文件/etc/passwd和sed.txt文件各自的行号

[root@group7 home]# awk '{print FNR,$0}' /etc/passwd sed.txt

8.在文件sed.txt文件中,每行添加一个#再输出

[root@group7 home]# awk -v ORS="###\n" '{print NR,$0}' sed.txt

awk格式化输出

1.使用awk打印文件前四行内容

[root@group7 home]# awk 'NR<5{print $0}' sed.txt
northwest  NW Charles Main      4.0 .99 3 35
western    WE Sharon  Gray      8.3 .97 5 23
southwest  SW Lewis   Dalsass   4.7 .8  2 19
southern   SO Suan    Chin      5.1 .96 4 15

2.打印userinfo.txt文件中区号为916的人的名字

[root@group7 home]# cat userinfo.txt
Mike Harrington:[510] 548-1278:250:100:175
Christian Dobbins:[408] 538-2358:155:90:201
Susan Dalsass:[206] 654-6279:250:60:50
Archie McNichol:[206] 548-1348:250:100:175
Jody Savage:[206] 548-1278:15:188:150
Guy Quigley:[916] 343-6410:250:100:175
Dan Savage:[406] 298-7744:450:300:275
Nancy McNeil:[206] 548-1278:250:80:75
John Goldenrod:[916] 348-4278:250:100:175
Chet Main:[510] 548-5258:50:95:135
Tom Savage:[408] 926-3456:250:168:200
Elizabeth Stachelin:[916] 440-1763:175:75:300
[root@group7 home]# awk -F"[ :]" '$3~/916/{print $1}' userinfo.txt
Guy
John
Elizabeth

print和printf的区别

printf不会做换行,而是直接输出所有

举例

Linux三剑客:grep、sed、awk相关推荐

  1. 15分钟搞定Linux三剑客 grep sed awk

    剑客grep 来者何人 grep是linux上的字符串搜索匹配命令.这个名字来自于linux编辑器vim的一个命令g/re/p,表示全局匹配某个正则表达式并打印出来,这也体现了grep自身的功能. 基 ...

  2. Linux三剑客 grep sed awk 详细使用方法

    Linux中最重要的三个命令在业界被称为"三剑客",它们是awk,sed,grep. 我们现在知道Linux下一切皆文件,对Linux的操作就是对文件的处理,那么怎么能更好的处理文 ...

  3. Shell ❀ 三剑客 - Grep + Sed + Awk

    文章目录 八.三剑客 - Grep + Sed + Awk 1.Grep - 过滤 1.1 常用grep参数 1.2 使用方法 2.Sed - 行匹配 2.1 执行原理 2.2 常见语法 2.3 使用 ...

  4. 三剑客grep sed awk

    三剑客 正则(RE)表达式 应用场景 规则 注意事项 正则符号 基础正则 扩展正则 正则实例 正则 VS 通配符 三剑客 grep sed sed核心应用 awk awk执行过程 内置变量 awk 正 ...

  5. Linux高级专题详解--shell编程大全(shell变量,if语句,case语句,for循环,while循环,函数调用,数组,正则表达式,shell脚本三剑客--grep,sed,awk家族)

    shell编程 初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语.英语 计算机语言:c语言.c++.(java php py ...

  6. 深入浅出linux三剑客之sed必杀技一例

    缘起:上完培训课后,同学们对sed加正则处理问题的热情高涨,氛围相当好,但是,有个别同学还是有些晕乎,因此,撰写此文.此例如果搞熟练了,sed和正则的大部分常用技术你掌握起来就简单了. 如果还有不会的 ...

  7. linux三剑客及正则表达(grep,sed,awk)

    首先我们现在知道Linux下一切皆文件,对Linux的操作就是对文件的处理,那么怎么能更好的处理文件呢?这就要用到我们上面的三剑客命令. 在说这三个命令前我们要插入一个小插曲就是"正则表达式 ...

  8. linux grep sed awk

    linux 文本编辑命令grep sed awk(转)     grep grep (global search regular expression(RE) and print out the li ...

  9. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  10. 正则表达式与扩展正则表达式(grep, sed, awk)

    Linux中用来在文件中搜索字符串的命令,如grep, sed, awk等命令支持正则表达式与扩展正则表达式. 1. 基础正则表达式 符号 解释 示例 * 匹配0次或多次 b.*t . 匹配任意字符 ...

最新文章

  1. rpm安装的mysql如何数据迁移_【鲲鹏翱翔】数据库04-MySQL5.7.28移植安装指南-RPM包方式...
  2. 如何使用 Java 中执行 Windows 的 CMD 命令
  3. 如何了解自己的认知偏差_了解吸引力偏差
  4. 学习android 画板源代码,Android实现画画板案例
  5. 使用Red Hat Enterprise Linux的实时内核
  6. ADO.NET 如何读取 Excel (下)
  7. 第2章 理解memcached的内存存储
  8. 硬件开发学习需要掌握的基础知识
  9. 从ResNet101到ResNet50
  10. 计算机与不确定性原理,傅里叶变换和不确定性原理
  11. 共享虚拟主机是不是服务器,共享虚拟主机、独享虚拟主机还是云服务器?
  12. 【Android】【UI】解决DialogFragment反复使用引起的并发问题和状态错误问题
  13. 如何查询oracle 的版本
  14. python找出素数_python找素数
  15. 兼容并“包”NLP评价指标:Robustness Gym框架
  16. KYC 技术详解:对金融行业与隐私合规的价值和意义
  17. html3d轮播图片效果,炫酷3D透视轮播图特效
  18. mdrill安装(2)
  19. 计算机硬盘ssd,如何查看电脑硬盘接口_如何查看电脑固态硬盘接口-win7之家
  20. 招商基金数字化转型下的研发管理|发布会精彩回顾

热门文章

  1. day13_下 Class中三大护法 及常用属性 单例模式(扩展)
  2. 均值漂移Mean Shift原理及推导过程
  3. byte和bit的区别,字节和比特,1兆等于多少字节,等于多少比特
  4. 58同城2015校招笔试、一面、二面经历
  5. [转]第一次用joomla做网站的一点感悟
  6. 语音识别研究综述——阅读笔记4(总结与展望)
  7. carsim学习日记1
  8. 电动车NFC一键启动(仪表总成、电源锁)_Ci522 Ci523_小体积超低成本13.56M非接触式读写器芯片
  9. 2015小米校招【研发类】面试真题经验分享
  10. 如何通过技术手段批量删除公众号文章?