我正在尝试使用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运算符跳过标题。如何打印页脚并仅处理学生数据(年龄)?
答案 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
其中h
和f
指定要跳过处理的页眉和页脚行。