awk 条件以及标头

awk 条件以及标头

我有一个employee.txt如下的虚拟文件可以使用awk

100  Thomas  Manager    Sales       $5,000
200  Jason   Developer  Technology  $5,500
300  Sanjay  Sysadmin   Technology  $7,000
400  Nisha   Manager    Marketing   $9,500
500  Randy   DBA        Technology  $6,000

$1当尝试使用>打印所有员工时200,我可以使用以下命令来执行此操作

cat employees.txt | awk '$1 > 200'

但是,我现在尝试添加自定义标题以及上述条件,如下所示:

cat employees.txt | awk '
BEGIN{print "ID|Name|Designation|Department|Salary";OFS="|"}
{print $1 > 200}
END{print"------------------------"}'

上面的代码似乎不起作用。

答案1

在 中awk,“主体”必须具有如下语法:

condition{command}

condition满足时command,当前行就完成了。也可以是:

{command}

...没有 a condition,所以它将被执行每一个线。这也是有效的:

condition

...如果没有command,则只awk打印,因此当满足$0时整行。condition


awk应该看起来:

awk 'BEGIN{print "ID|Name|Designation|Department|Salary";OFS="|"} 
  $1>200{$1=$1;print} END{print"------------------------"}' file

注意$1=$1。这是必需的,因为您只更改输出字段分隔符。因此,您需要一一打印字段 ( $1,$2,...) 或通过 强制重建记录$n=$n

答案2

使用任一

 BEGIN { ... }
 $1 > 200
 END { .. }

或者

 BEGIN { ... }
 $1 > 200 { print ;}
 END { .. }

您使用的指令将所有第一个字段 ($1) 打印到“文件名”200。

相关内容