AWK进程页眉和页脚

时间:2018-05-25 19:52:59

标签: awk

我正在尝试使用awk脚本来读取学生数据。该文件具有很少的标题行和几个页脚行。 (假设前3和后3) 实际的学生数据放在页眉和页脚之间,用逗号分隔,如下所示,

姓名,年龄,位置

我想打印学生的年龄以及页眉和页脚。

示例数据:

Header 1
Header 2
Header 3
dhana,28,USA
subha,24,India
Footer 1
Footer 2
Footer 3

预期输出:

Header 1
Header 2
Header 3
28
24
Footer 1
Footer 2
Footer 3

我的代码:

BEGIN{ FS = ","}
{ 
    if(NR > 3)
    {
        print $2
    }else{
        print $0
    }
}

我的输出:

Header 1
Header 2
Header 3
28
24

我正在使用NR运算符跳过标题。如何打印页脚并仅处理学生数据(年龄)?

2 个答案:

答案 0 :(得分:2)

awk 解决方案:

awk -F',' 'NF == 3{ $0 = $2 }1' file

输出:

Header 1
Header 2
Header 3
28
24
Footer 1
Footer 2
Footer 3

答案 1 :(得分:1)

双扫描算法将为您提供更多控制

$ awk -F, -v h=3 -v f=3 'NR==FNR {n=NR; next} 
                         FNR>h && FNR<=n-f {$0=$2}1' file{,}

Header 1
Header 2
Header 3
28
24
Footer 1
Footer 2
Footer 3

其中hf指定要跳过处理的页眉和页脚行。