我有一个单字段的文件,如此;
scaffold10017|size24957-5236
scaffold10017|size24957-5236
scaffold10017|size24957-5236
scaffold10017|size24957-7124
scaffold10076|size19532-3212
scaffold10076|size19532-6287
scaffold1008|size40169-12384
scaffold1008|size40169-12399
scaffold1008|size40169-21350
scaffold1008|size40169-34740
我想打印一个包含此字段的新文件和第二个字段,每次记录与字段中的上一个记录不匹配时,这些字段的值会增加一个值(比如100,000)。所以输出看起来像这样:
scaffold10017|size24957-5236 0
scaffold10017|size24957-5236 0
scaffold10017|size24957-5236 0
scaffold10017|size24957-7124 0
scaffold10076|size19532-3212 100000
scaffold10076|size19532-6287 100000
scaffold1008|size40169-12384 200000
scaffold1008|size40169-12399 200000
scaffold1008|size40169-21350 200000
scaffold1008|size40169-34740 200000
如果有人能建议如何做到这一点,将不胜感激。
答案 0 :(得分:2)
awk '
BEGIN { flag = 0 }
NR>1 && prev != $1 {
prev = $1
flag += 100000
}
{ print $1"|"$2, flag }'
您最初也可以设置flag = -100000
,并从第二种情况的条件中删除NR>1
。
答案 1 :(得分:2)
awk -F\| -v value=-100000 '
$1 != prev {value += 100000; prev = $1}
{print $0, value}
'
答案 2 :(得分:1)
awk -F '|' 'x!=$1{x=$1; y+=(NR==1?0:100000)}; {print $0, y}' input.txt