awk
Table of Contents
1 命令用法:
awk [-F field-separator] 'commands' input-file(s)
空格为默认分隔符
2 模式和动作
commands 可以有多个动作,第个动作用{}括起来 模式有两个特殊字段 BEGIN 设置计数和打印表头 END 打印文本输出总数和结尾状态
3 域和记录
用$1,$3分别表示第1和第3域。$0表示所有域,用print命令打印域
4 示例
4.1 输出
4.1.1 1.抽取域
awk -F: '{print $1}' /etc/passwd
4.1.2 2.保存输出
awk -F: '{print $1}' /etc/passwd | tee user 使用tee命令,在输出文件的同时,输出到屏幕
4.1.3 3.打印报告头
awk -F: 'BEGIN {print "NAME\n"} {print $1}' /etc/passwd
4.1.4 4.打印结尾
awk -F: '{print $1} END {print "this is all users"}' /etc/passwd
4.2 条件操作符
4.2.1 1.匹配
awk -F: '{if($1~/root/) print }' etc/passwd //{if($1~/root) print}表示如果field1包含root,打印它
4.2.2 2.精确匹配
使用等号 == awk -F: '{if($3=="0") print }' /etc/passwd
4.2.3 3.不匹配
!~ awk -F: '{if($1!~/linuxtone/) print }' /etc/passwd
!= 精确不匹配 awk -F: '{if($1!="linuxtone") print }' /etc/passwd
打印有多少行记录 awk 'END {print NR}' /etc/passwd
设置输入域到变量名 awk -F: '{name=$1; path=$7; if(name~/root/) print name "\tpath is:" path}' /etc/passwd
域值比较操作 awk '{if($6<$7) print $0}' input-file