我有一个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。