细说awk
awk是一个处理文本的编程语言工具,能用简短的程序处理标准输入或文件、数据排序、计算以及生成报表等。
awk的基本语法:
awk option ‘pattern {action}’ file
awk选项
-f program-file //从文件中读取awk程序源文件
-F fs //指定fs为输入字段分隔符
-v var=value //变量赋值
--posix //兼容POSIX正则表达式
--dump-variables=[file] //把awk命令时的全局变量写入文件,默认文件是awkvars.out
--profile=[file] //格式化awk语句到文件,默认是awkprof.out
awk模式
BENG{} //给程序赋予初始状态,先执行的工作
END{} //程序结束之后执行的一些结尾工作
/reqular expression/ //为每个输入记录匹配正则表达式
pattern && pattern //逻辑and,满足两个模式
pattern || pattern //逻辑or,满足其中一个模式
! pattern //逻辑not,不满足模式
pattern1,pattern2 //连续范围匹配
示例:
1)从文件读取awk程序处理文件
echo ‘{print $1}‘ > test.awk
tail -3 /etc/services |awk -f test.awk //以下是过渡出的内容
iqobject
iqobject
matahari
2)指定输入分隔符,指定多个分隔符
tail -2 /etc/passwd|awk ‘BEGIN{FS=":"}{print $1}‘
tail -2 /etc/passwd|awk -F: -f test.awk
a="ass;gg#sow;p#slolow;wpw#pp"
echo $a|awk -F‘[;#]+‘ ‘{print $3}‘ //以下是显示的内容
sow
3)变量赋值
awk -v a=$a ‘BEGIN{print a}‘ //引用系统变量
ass;gg#sow;p#slolow;wpw#pp
awk ‘BEGIN{print ‘$a‘}‘ //会报语法错误,是因为变量里含有特殊符号
a=123
awk ‘BEGIN{print ‘$a‘}‘
123
awk -v a=linux ‘BEGIN{print a}‘
linux
原文地址:http://blog.51cto.com/13480443/2088360
时间: 2024-10-08 04:01:12