AWK:如何重写列的内容但保留标题

AWK:如何重写列的内容但保留标题

我有一个非常大的数据集,在上传到服务器之前需要对其进行操作。文件内容为csv格式,必须保留标题以确保数据与上传数据库匹配。

我对如何更改特定列的值进行了一些搜索,发现了这一点:

awk -F, '{$467=0 ; print $467}'

但这会覆盖列标题。有没有办法在不覆盖列标题的情况下做到这一点???

答案1

这将保存第一行并更改 467 字段的所有值

awk -F, 'NR>1 {$467=0}1' OFS=, file

NR 目前为止看到的输入记录总数(行号)

awk 中的所有内容都具有条件​​ {操作} 的形式。如果条件计算结果为 1,则执行操作。如果省略条件,则默认条件为 1,因此执行操作。如果省略操作,则 - 如果条件为 1 - 执行默认操作,即 {print $0},即“打印记录”,默认情况下为输入文件的一行。只有一个条件和默认操作

所以 1 或任何其他非零数字字面意思是 {print $0}

感谢@glenn_jackman,添加了 OFS

相关内容