awk 命令

来源:互联网 发布:squarespace域名设置 编辑:程序博客网 时间:2024/05/21 17:59

awk

Table of Contents

  • 1 命令用法:
  • 2 模式和动作
  • 3 域和记录
  • 4 示例
    • 4.1 输出
      • 4.1.1 1.抽取域
      • 4.1.2 2.保存输出
      • 4.1.3 3.打印报告头
      • 4.1.4 4.打印结尾
    • 4.2 条件操作符
      • 4.2.1 1.匹配
      • 4.2.2 2.精确匹配
      • 4.2.3 3.不匹配

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

参考:http://bbs.linuxtone.org/thread-2777-1-1.html

原创粉丝点击