首页 > 解决方案 > 使用 awk 显示从第一列开始的行范围

问题描述

我有一个如下所示的表格,这里我只想Emp_Name从第二行开始打印第一列的所有内容。

Emp_Name    Position        Experience
Cara        Senior          12
Doc         Junior          6
Quinn       Lead            14
Cedric      Manager         18
Collen      Junior          8

我知道这awk '{print $1}'会打印表中的第一列,但是如何跳过第一行或字段Emp_Name,即打印第二行到最后一个字段的所有名称?这里最后一个字段或行号可以是任何数字(未知)。

任何帮助,将不胜感激。

标签: awk

解决方案


虽然不完全清楚,如果您只想跳过第一行然后尝试跟随。

awk 'FNR>1' Input_file

或打印第一列使用:

awk 'FNR>1{print $1}'  Input_file


如果您不知道哪个字段Emp_No会出现,并且您想从第一行查找其列号并且不想从该行的其余部分打印相同的列,请尝试以下操作。

awk '
BEGIN{
  OFS="\t"
}
FNR==1{
  for(i=1;i<=NF;i++){
     if($i=="Emp_Name"){
       val=i
       next
     }
  }
}
{
  for(i=1;i<=NF;i++){
     if(i==val){
       continue
     }
     else{
       value=(value?value OFS:"")$i
     }
  }
  print value
  value=""
}
'   Input_file

推荐阅读