awk,header:读取时的igore,写入时包括

时间:2017-02-06 10:39:04

标签: csv awk

我知道在阅读文件时如何忽略列标题。我可以做这样的事情:

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中做到这一点?

简而言之,有一种方法可以让我在读取文件时忽略列标题,对数据执行操作,然后在将其写入输出文件时包含列标题,只需一步(或一小步非常重要)响应时间少?)

1 个答案:

答案 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检查标头是否已经打印过。