Linux awk使用示例
来源:互联网 发布:淘宝的聚划算怎么抢 编辑:程序博客网 时间:2024/05/21 01:51
- awk用法
- 示例
- awk编程
- 对比
awk用法:
awk 'pattern {action}'
ARGC 命令行变元个数
ARGV 命令行变元数组
FILENAME 当前输入文件名
FNR 当前文件中的记录号
FS 输入域分隔符,默认为一个空格
RS 输入记录分隔符
NF 当前记录里域个数
NR 到目前为止记录数
OFS 输出域分隔符
ORS 输出记录分隔符
示例:
test.txt
test zqhtttttttgoodI adm student!3242test 444zhauiqhui,zqhbboy zqh or die!
$ awk '{print $1,$4}' test.txt # 每行按空格或TAB分割,输出文本中的1、4项$ awk -F, '{print $1,$2}' test.txt # 使用","分割,输出文本中的1、2项$ awk 'BEGIN{FS=","} {print $1,$2}' test.txt #使用内建变量$ awk -F '[ ,]' '{print $1,$2,$5}' test.txt #多个分隔符,先使用空格分割,然后对分割结果再使用","分割$ awk -F ',' 'BEGIN {print "start--"} {print $1} END {print "end--"}' test.txt # 所有行开始输出添加'start--',在最后一行添加'end--'输出:start--test zqhtttttttgoodI adm student!3242test 444zhauiqhuibboy zqh or die!end--$ awk -F, '/zqh/' test.txt # 查找关键字为'zqh'的内容输出:test zqhzhauiqhui,zqhbboy zqh or die!$ awk '/zqh/{print $1}' test.txt # 输出包含关键字为'zqh'的行第一个值(以空格或TAB分割)输出:testzhauiqhui,zqhbboy$ awk '{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' test.txt # 统计test.txt中文件名,每行的行号,每行的列数,对应的完整行内容输出:filename:test.txt,linenumber:1,columns:2,linecontent:test zqhfilename:test.txt,linenumber:2,columns:1,linecontent:tttttttfilename:test.txt,linenumber:3,columns:1,linecontent:goodfilename:test.txt,linenumber:4,columns:3,linecontent:I adm student!filename:test.txt,linenumber:5,columns:2,linecontent:3242test 444filename:test.txt,linenumber:6,columns:1,linecontent:zhauiqhui,zqhfilename:test.txt,linenumber:7,columns:4,linecontent:bboy zqh or die!注:上面命令可用:$ awk -F '{printf("filename:%10s,linenumber:%s,columns:%s,linecontent:%s\n",FILENAME,NR,NF,$0)}' test.txt 来代替$ awk '$1 ~ /zqh/ {print $1,$3}' test.txt #找出第一列包含 "zqh",并打印该行的第一列与第三列,其中~是模式的开始输出:zhauiqhui,zqh$ awk 'BEGIN{IGNORECASE=1} /zqh/' test.txt # 忽略大小写$ awk '$2 !~ /zqh/ {print $2,$4}' log.txt #找出不包含"zqh",并打印该行的第二列与第四列
awk编程
$ awk '$1>2' test.txt # 输出第一列大于2的行$ awk '$1>2 && $2=="Are" {print $1,$2,$3}' test.txt # 输出第一列大于2并且第二列等于'Are'的行$ awk '{count++; print $0;} END{print "count is ", count}' test.txt输出:test zqhtttttttgoodI adm student!3242test 444zhauiqhui,zqhbboy zqh or die!count is 7$ awk 'BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name[i]}' test.txt输出:0 test1 ttttttt2 good3 I4 3242test5 zhauiqhui,zqh6 bboy
对比
- grep 更适合单纯的查找或匹配文本
- sed 更适合编辑匹配到的文本
- awk 更适合格式化文本,对文本进行较复杂格式处理
阅读全文
0 0
- Linux awk使用示例
- linux awk使用示例收集
- awk命令使用示例
- awk编程基本使用示例
- linux awk使用详解
- linux awk使用简介
- linux awk的使用
- Linux awk使用浅析
- linux awk使用例子
- linux --awk使用
- linux awk使用
- linux下awk的典型用法示例
- Linux中awk使用大全
- Linux awk 使用用例
- linux AWK命令使用详解
- linux awk命令使用实例
- linux 下awk 的使用
- Linux awk的简单使用
- QT 信号与槽
- FPGA——数码管动态扫描
- 文章标题
- tcp建立连接为什么需要三次握手
- iptables
- Linux awk使用示例
- 王一三学习笔记 | 理解Java垃圾回收
- 数据结构与算法之LinkedList源码分析
- LeetCode-008 String to Integer (atoi)
- 计算几何模板
- [AGC005F]Many Easy Problems-FFT-容斥原理
- 圆周率 π 的求法(二)
- websocket,无法建立到 ws://... 服务器的连接
- 大数据量查询优化——数据库设计、SQL语句、JAVA编码