【Linux运维小白笔记 AWK sed】

                   

使用格式:

 

sed '编辑命令' 文件名   

: sed -n '/www.a.com/p' /usr/local/nginx/logs/access.log 

 #过滤Nginx日志文件里含有www.a.com的信息

 

awk 选项 '模式或者命令{编辑指令}' 文件名

:    awk '/www.a.com/{print}' /usr/local/nginx/logs/access.log

#过滤Nginx日志文件里含有www.a.com的信息

 

 元字符 :

               \    转义
              ^   以....开头
              $   以....结尾
              .   任意符
              *   匹配子表达式0次或多次  
 

            [list]  匹配列表里的一个字符 eg:  go[ola]d 也只是匹配其中一个字符             
            [^list]  匹配任意一个不在列表里的一个字符
           \{n,m\}  匹配前面的子表达式最小n到最大m次
  

 扩展元字符:

                +  匹配前面子表达式1次以上
                ? 匹配前面子表达式0次或者1次
                () 将括号中的字符串看成一个整体
                |  以 或 的方式匹配
   
     awk 内置变量:
                 FS  指定每行文本中的分隔断,不写分隔符默认空格
                 NF  处理当前文本的列数
                 NR  处理当前文本的行数
                 $0  处理当前行的整行内容
                 $n  处理当前的第n个字段

 

简单实操案例:

一条命令:提取IP并且编辑IP生成主机名:

生成格式:用户名-IP-地址)( 其中IP的 . 也替换成 - )

hostname `ifconfig | grep "inet addr:" | awk -F: 'NR==1 {print $2}'|awk '{print $1}'|awk -F. '{print "root-"$1"-"$2"-"$3"-"$4"-BeiJing"}'`

 

【Linux运维小白笔记 AWK sed】