【发布时间】:2022-01-07 15:03:16
【问题描述】:
我正在执行以下 awk 命令来拆分文件并生成 .CSV 格式的输出。我尝试了很多方法来在脚本中传递正确的语法以在 csv 文件上生成,但没有运气。有人可以让我知道在哪里提到正确的语法。
awk -v lines="30000" -v pre="awk_part_" '
NR==1 { header=$0; next}
(NR-1) % lines ==1 { fname=pre c++; print header > fname}
{print > fname}' patient.tsv
上述命令的工作原理:
- awk -v lines=”30000″ -v pre=”awk_part_” – 首先,我声明了两个 awk 变量来定义每个拆分文件中有多少记录以及文件名的前缀
- NR==1 { 标头=$0; next} – 当 awk 读取第一行时,它将该行存储在 header 变量中并停止进一步处理
- (NR-1) % 行 ==1 { fname=pre c++; print header > fname} – 当当前行是主干的第一条记录时,我们需要通过增加一个计数器(c)来更新文件名(fname)。另外,由于这将是一个新文件,我们将 header 变量的值作为第一行添加到文件中
- {print > fname}' Patient.tsv – 然后,我刚刚将每个记录行重定向到当前 fname 文件
【问题讨论】:
-
edit 您的问题包含minimal reproducible example,其中包含简洁、可测试的样本输入和预期输出,以便我们为您提供帮助。显然,对于 minimal reproducible example,您应该设置
lines=3或类似的,而不是 3000。 -
如何在上述awk命令中生成csv输出文件
标签: awk