[root@wan day8]# awk '{print}' passwd
-- hello world输出
[root@wan day8]# awk 'BEGIN {print "hello world"}'
-- 输出指定的列
[root@wan day8]# awk -F: '{print $1,$2,$3}' passwd | head -3
-- 换行输出内容
[root@wan day8]# awk 'BEGIN {print "zhang\nwan\nqiang"}'
-- 格式化输出(左对齐)
[root@wan day8]# awk -F: '{printf "user_name:%-10s user_id:%i\n",$1,$3}' /etc/passwd | head -5
-- 格式化输出重定向
[root@wan day8]# awk -F: '{printf "user_name:%-10s user_id:%i\n",$1,$3 > "/tmp/user.txt"}' /etc/passwd
-- 内置变量指定输入分隔符
[root@wan day8]# awk 'BEGIN {FS=":"}{print $1,$3}' /etc/passwd
-- 内置变量指定输出分隔符
[root@wan day8]# awk 'BEGIN {FS=":"}{OFS="//"}{print $1,$3}' /etc/passwd
-- 统计命令处理的记录数(多个文件连续统计)
[root@wan day8]# awk '{print NR}' url.txt wan.txt
-- 统计命令处理的记录数(多个文件单独统计)
[root@wan day8]# awk '{print FNR}' url.txt wan.txt
-- 输出文件行的记录个数
[root@wan day8]# awk '{print NF}' test.txt
-- 输出文件行最后一个记录
[root@wan day8]# awk '{print $NF}' test.txt
-- 输出系统环境变量
[root@wan day8]# awk 'BEGIN {print ENVIRON["PATH"]}'
[root@wan day8]# awk 'BEGIN {print ENVIRON["USER"]}'
-- 定义的变量
[root@wan day8]# awk 'BEGIN {test="hello world";print test}'
-- 定义的变量
[root@wan day8]# awk -v test='hello world' 'BEGIN {print test}'
-- 算数运算
[root@wan day8]# awk 'BEGIN {x=10;y=20;print x*y,x/y,x+y,x-y,x**y,x%y,x^y}'
-- 字符串拼接
[root@wan day8]# awk 'BEGIN {print "I","am","a","stuent"}'
-- 赋值运算
[root@wan day8]# awk 'BEGIN {x=10;y=20;print x++,y--,++x,--y}'
-- 比较运算符
[root@wan day8]# awk -F: '$3>100 {print $1,$3}' /etc/passwd
-- 正则匹配
[root@wan day8]# awk -F: '$0~"^root" {print}' /etc/passwd
-- 逻辑与关系
[root@wan day8]# awk -F: '$3>100 && $4>100 {print $1,$2,$3}' /etc/passwd
-- 逻辑或关系
[root@wan day8]# awk -F: '$3>100 || $4>100 {print $1,$2,$3}' /etc/passwd
-- 匹配以“roo”开始的行
[root@wan day8]# awk '/^root/' passwd
-- 匹配以“roo”开始的行
[root@wan day8]# awk -F: '$1~/^root/' passwd
root:x:0:0:root:/root:/bin/bash
[root@wan day8]# awk -F: '$1~"^root"' passwd
root:x:0:0:root:/root:/bin/bash
[root@wan day8]# awk -F: '$0~"^root"' passwd
root:x:0:0:root:/root:/bin/bash
[root@wan day8]# awk -F: '$0~"^root"' passwd
root:x:0:0:root:/root:/bin/bash
-- 正则匹配一个范围
[root@wan day8]# awk '/^mail/,/^ftp/' passwd
-- 文件处理前后执行操作
[root@wan day8]# awk 'BEGIN {print "处理开始"};/^mail/,/^ftp/ ;END {print "处理结束"}' passwd
-- 显示系统用户名和id
[root@wan day8]# awk -F: 'BEGIN {printf "%-15s %s\n","USER:","NAME"} {printf "%-15s %s\n",$1,$3}' /etc/passwd
-- 取一个范围内的内容
[root@wan day8]# awk -F: '$3==0,$NF~/nologin$/' /etc/passwd
-- if 条件判断
[root@wan day8]# awk -F: '{if ($3==0) {print $1,"管理员"}}' /etc/passwd
[root@wan day8]# awk -F: '{if ($3==0) {print $1,"管理员"} else {print $1,"普通用户"}}' /etc/passwd
-- while循环
[root@wan day8]# awk 'BEGIN {i=1;while(i<=100) {sum+=i;i++};print sum}'
-- dowhile循环
[root@wan day8]# awk 'BEGIN {i=1;do{sum+=i;i++} while(i<=100) {print "1+2+3+..+100=",sum}}'
-- for循环
[root@wan day8]# awk 'BEGIN {for (i=1;i<=100;i++){sum+=i} print sum}'
SHELL 之 文本三剑客 -- awk
最新推荐文章于 2024-07-28 22:43:21 发布