9.6/9.7 awk
- awk也是流式编辑器,针对文档中的行和段进行操作 awk可以分为几个部分:
- 匹配字符或者字符串
- 截取文档中的某一段
- 条件操作符
- 数学运算
- 内置变量
实例1:
- head -n2 test.txt|awk -F ':' '{print $1}'
- head -n2 test.txt|awk -F ':' '{print $0}'
- awk -F ':' '{print $1"#"$2"#"$3"#"$4}'
- awk '/oo/' test.txt
- awk -F ':' '$1 ~/oo/' test.txt
- awk -F ':' '/root/ {print $1,$3} /test/ {print $1,$3}' test.txt
- awk -F ':' '$3=="0"' /etc/passwd
- awk -F ':' '$3>="500"' /etc/passwd
- awk -F ':' '$3>=500' /etc/passwd
- awk -F ':' '$7!="/sbin/nologin"' /etc/passwd
匹配字符或者字符串
匹配root的行
awk可以做到匹配某一段中的某个字符,以:分隔,匹配第一段中带有root的行
awk匹配字符可以使用正则
awk自带脱意功能,grep脱意需要-E或者egrep,sed脱意需要-r选项
grep -E
sed –r
截取文档中的某一段
- awk –F '分隔符' 如果不指定分隔符,默认会以空格或者空白字符分隔。
打印第一段
打印全部内容;$0表示全部内容
打印第1段~第4段
- 注意:这里打印出来了第1到第4段,但是内容没有分隔符,这里我们加个分隔符,分隔符要以双引号引起来;后面我们会介绍一个变量OFS来进行分隔。
- awk可以支持多个匹配
匹配到root打印第1和第3段,匹配到user打印第1,第3,第4段。
- |在正则里面表示或者
打印出匹配到root或者user的行
||也是并且的意思,但是用法还是有一点区别。
条件操作符
- == 等于,精确匹配
- >大于
- >= 大于等于
- < 小于
- <= 小于等于
- != 不等于
打印出第3段等于0的行
打印出第3段大于等于500的行
注意'500'和"500"区别:双引号引起来的500会把它当成字符,会按照阿斯玛排序,单用号引起来的500是数字。
打印出第7段不/sbin/nologin的行
并且&&和或者||
或者||
两个字段进行运算
awk内置变量
- awk常用的变量有OFS,NR和NF
- OFS 用来指定分隔符号
- NR 表示行数
- NF 表示段数
指定#为分隔符
用awk打印前5行,并显示行号
用awk打印20行以后的行,并显示行号
awk中可以使用if判断
awk中的数学运算
- awk可以更改段值
将第一段全部更改为root
- awk可以计算某个段的值
求第3段和
打印出第一段是root的行
打印某行到某行之间的内容http://ask.apelearn.com/question/559
sed转换大小写 http://ask.apelearn.com/question/7758
sed在某一行最后添加一个数字http://ask.apelearn.com/question/288
删除某行到最后一行 http://ask.apelearn.com/question/213
打印1到100行含某个字符串的行 http://ask.apelearn.com/question/1048
awk 中使用外部shell变量http://ask.apelearn.com/question/199
awk 合并一个文件 http://ask.apelearn.com/question/493
把一个文件多行连接成一行 http://ask.apelearn.com/question/266
awk中gsub函数的使用 http://ask.apelearn.com/question/200
awk 截取指定多个域为一行 http://ask.apelearn.com/question/224
过滤两个或多个关键词 http://ask.apelearn.com/question/198
用awk生成以下结构文件 http://ask.apelearn.com/question/5494
awk用print打印单引号 http://ask.apelearn.com/question/1738
合并两个文件 http://ask.apelearn.com/question/945
awk的BEGIN和END http://blog.51cto.com/151wqooo/1309851
awk的参考教程 http://www.cnblogs.com/emanlee/p/3327576.html