【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"}'`