在linux中处理tsv文件,假设第一行表头字段有n个,现在需要在第二行开始将第n-3到第n列每列都拼接上第一行对应列的值:
例子如下:
name | age | class | score | group |
---|---|---|---|---|
a | 22 | mth | 90 | 01 |
b | 21 | eng | 80 | 02 |
c | 23 | chi | 70 | 02 |
1.循环:第一行第三列-第一行最后一列,取得列的值
2.从第二行开始替换该列的值
从来没用过awk命令,不知道怎么写
awk 'BEGIN {
IFS = OFS = "\t"
}
{
for (NR = 1; column = 3; column <= NF; ++column) {
$first_column = $3
}
print
}
'
name | age | class | score | group |
---|---|---|---|---|
a | 22 | class:mth | score:90 | group:01 |
b | 21 | class:eng | score:80 | group:02 |
c | 23 | class:chi | score:70 | group:02 |