我知道在阅读文件时如何忽略列标题。我可以做这样的事情:
awk 'FNR > 1 { #process here }' table > out_table
但是如果我这样做,除了COLUMN HEADER之外的所有其他内容都会写入输出文件中。但我希望输出文件也有COLUMN HEADER。
当我执行第一个声明后,我可以做这样的事情:
awk 'BEGIN {print "Column Headers\t"} {print}' Out_table > out_table_with_header
但这成了一个两步的过程。那么有没有办法在SINGE STEP中做到这一点?
简而言之,有一种方法可以让我在读取文件时忽略列标题,对数据执行操作,然后在将其写入输出文件时包含列标题,只需一步(或一小步非常重要)响应时间少?)
答案 0 :(得分:1)
不确定我是否正确,你可以简单地说:
awk 'NR==1{print}; NR>1 { # process }' file
可以简化为:
awk 'NR==1; NR>1 { # process }' file
适用于单个输入文件。
如果要处理多个文件,则第1行的所有文件都具有相同的列标题:
awk 'FNR==1 && !h {print; h=1}; FNR>1 { # process }' file1 file2 ...
我正在使用变量h
检查标头是否已经打印过。