shell之awk 记录

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介:

给下面的字符中加上""号

cat xx.txt 
原始
master
1.8M

awk '{print "\""$0"\""}' xx.txt

"原始"
"master"
"1.8M"

或者

sed 's/^/\"/;s/$/\"/' xx.txt 
"原始"
"master"
"1.8M"

都可以实现


通过awk同时使用多个分隔符,然后通过正则匹配多个分隔符的方法来实现:


[root@oldboy ~]# ifconfig eth0 |awk -F '[ :]+' 'NR==2 {print $4}'


10.0.0.185


我们来说明下这个简单易用的好办法:


提示:本题NR是行号,分隔符+号匹配,[]里一个或多个任意一个分隔符,这里就是匹配一个或多个冒号或空格。


1awk -F 后面跟分隔符‘[空格:]+’,其中[空格:]多分隔符写法,意思是以空格或冒号做分隔,后面的"+"号是正则表达式,意思是匹配前面空格或冒号,两者之一的1个或1个以上。


2NR==2sed -n "2p",相当,意思都是选择第几行,例:


[root@oldboy ~]# ifconfig eth0|awk NR==2


          inet addr:10.0.0.185  Bcast:10.0.0.255  Mask:255.255.255.0


3)指定awk -F '[ :]+'分隔符后,不同字符串被分隔的列依次为:




inet


addr


10.0.0.185


  Bcast:10.0.0.255  Mask:255.255.255.0


第一列


第二列


第三列


第四列


  后面忽略不计。



4)整个答案awk部分意思是,通过NR==2取出第二行,然后,通过-F '[-:]+多分隔符正则匹配,然后通过{print $4}打印出第四列 !谢谢杨瑞同学的答案啊, 懒得写了,所以让你总结下。嘿嘿,看到后别怪老师啊。


5)掌握了理论要去实践验证才是科学严谨的学习态度,好,来几个例子实践说话吧。


[root@oldboy ~]# echo ---1:----2|awk -F '[-:]+' '{print $2}'     


1


[root@oldboy ~]# echo ---1:----2|awk -F '[-:]+' '{print $3}'     


2


[root@oldboy ~]# echo ---1:::::2|awk -F '[-:]+' '{print $3}'    


2

生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员。提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟:
阶段1:开发一个守护进程脚本每30秒实现检测一次。
阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误。
阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
[root@oldboy~] # mysql -uroot -p'oldboy' -S /data/3307/mysql.sock -e "show slavestatus\G;"
*************************** 1. row ***************************
                Slave_IO_State:Waiting  for  master to send event
                   Master_Host:10.0.0.179    #当前的mysql master服务器主机
                   Master_User: rep
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File:mysql-bin.000013
          Read_Master_Log_Pos: 502547
                Relay_Log_File:relay-bin.000013
                 Relay_Log_Pos:251
         Relay_Master_Log_File:mysql-bin.000013
              Slave_IO_Running:Yes
            Slave_SQL_Running: Yes
               Replicate_Do_DB: 
          Replicate_Ignore_DB: mysql
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                    Last_Errno: 0
                    Last_Error: 
                  Skip_Counter: 0
          Exec_Master_Log_Pos: 502547
               Relay_Log_Space:502986
               Until_Condition:None
                Until_Log_File: 
                 Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
               Master_SSL_Cert: 
            Master_SSL_Cipher: 
                Master_SSL_Key: 
        Seconds_Behind_Master: 0    #和主库比同步延迟的秒数,这个参数很重要
Master_SSL_Verify_Server_Cert: No
                 Last_IO_Errno: 0
                 Last_IO_Error: 
                Last_SQL_Errno: 0

               Last_SQL_Error:




本文转自 a120518129 51CTO博客,原文链接:http://blog.51cto.com/silencezone/1874024,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
运维 Shell C语言
运维(20)- shell awk
运维(20)- shell awk
142 0
|
Shell 数据处理 Perl
shell脚本里的三剑客之一awk
shell脚本里的三剑客之一awk
240 2
|
Shell Linux Perl
Linux|如何允许 awk 使用 Shell 变量
Linux|如何允许 awk 使用 Shell 变量
|
Shell Linux Perl
shell 编程中 awk ,wc ,$0,$1 等 命令的使用总结
shell 编程中 awk ,wc ,$0,$1 等 命令的使用总结
484 0
|
Shell Perl
shell学习(十) 【shell awk基本语法】
shell学习(十) 【shell awk基本语法】
177 1
|
存储 Shell 索引
第七章 Shell文本处理三剑客之awk
第七章 Shell文本处理三剑客之awk
|
存储 Shell Linux
【Shell 命令集合 文件管理】Linux 文本处理工具 awk命令使用指南
【Shell 命令集合 文件管理】Linux 文本处理工具 awk命令使用指南
309 0
|
存储 Shell 数据安全/隐私保护
Shell三剑客(grep、sed、awk)(下)
Shell三剑客(grep、sed、awk)(下)
321 1
Shell三剑客(grep、sed、awk)(下)
|
关系型数据库 MySQL Shell
数据库备份和Shell基础测试及AWK(运维)
数据库备份和Shell基础测试及AWK(运维)
229 0
|
Shell 开发工具 Perl
Shell中的文本处理工具、cut [选项参数] filename 说明:默认分隔符是制表符、awk [选项参数] ‘/pattern1/{action1}filename 、awk 的内置变量
cut 的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。awk和gawk是一样的,awk是gawk的一个软连接一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。.........
370 1
Shell中的文本处理工具、cut [选项参数] filename 说明:默认分隔符是制表符、awk [选项参数] ‘/pattern1/{action1}filename 、awk 的内置变量