我有一个 800 多行的文件。每行都有一定数量的个体,我们必须测量其特征(n = 3、5 或 10)。我想扩展该文件,以便每个人根据我们需要测量的数字(n)拥有自己的行。
例如:
Row Who/What Description n
8001 Maize line Control 3
会成为:
Row Who/What Description n
8001 Maize line Control 3
8001 Maize line Control 3
8001 Maize line Control 3
我不精通 Unix(仍在学习!),但我知道我需要读取 txt/csv 文件,然后根据第四列中的 n 进行复制。我不需要重复列标题,这只是为了组织。有人可以帮我弄这个吗?
答案1
尝试使用awk
:
awk 'NR==1{ print; next } { repeat=$NF; while (repeat--) print } ' infile
您给定的示例文件不是 .csv 文件,应该以逗号分隔;您需要使用 awk 的-F
选项指定输入文件中使用的分隔符。
awk -F, 'NR==1{ print; next } { repeat=$NF; while (repeat--) print } ' infile
回答评论中提出的问题:
awk 'NR==1{ print; next } { bakup=$1; repeat=$NF;
while (repeat--) { $1=bakup"."++dup; print }; dup=0 }' infile