使用awk
,變變n=<your_interest>
值,根據您的需要。
一襯墊:
awk -v col=1 -v n=2 'function repeat(v, n,i){for(i=1; i<=n; i++)printf("%s%s",(i==1?"":OFS),v)}{for(i=1; i<=NF; i++)printf("%s%s",(i==col?repeat($i,n):$i),i==NF?RS:OFS)}' infile
輸入:
$ cat infile
1 4771131 4772199 ENSMUSG00000103922 0 + 0.670011
1 4773206 4785739 ENSMUSG00000033845 0 - 95.0352
1 4778063 4779212 ENSMUSG00000102275 0 - 0.1806
1 4807788 4848410 ENSMUSG00000025903 0 + 110.078
當col=7 and v=5
$ awk -v col=7 -v n=5 'function repeat(v, n,i){for(i=1; i<=n; i++)printf("%s%s",(i==1?"":OFS),v)}{for(i=1; i<=NF; i++)printf("%s%s",(i==col?repeat($i,n):$i),i==NF?RS:OFS)}' infile
1 4771131 4772199 ENSMUSG00000103922 0 + 0.670011 0.670011 0.670011 0.670011 0.670011
1 4773206 4785739 ENSMUSG00000033845 0 - 95.0352 95.0352 95.0352 95.0352 95.0352
1 4778063 4779212 ENSMUSG00000102275 0 - 0.1806 0.1806 0.1806 0.1806 0.1806
1 4807788 4848410 ENSMUSG00000025903 0 + 110.078 110.078 110.078 110.078 110.078
假設如果設置第一列是col=1
,然後
$ awk -v col=1 -v n=5 'function repeat(v, n,i){for(i=1; i<=n; i++)printf("%s%s",(i==1?"":OFS),v)}{for(i=1; i<=NF; i++)printf("%s%s",(i==col?repeat($i,n):$i),i==NF?RS:OFS)}' infile
1 1 1 1 1 4771131 4772199 ENSMUSG00000103922 0 + 0.670011
1 1 1 1 1 4773206 4785739 ENSMUSG00000033845 0 - 95.0352
1 1 1 1 1 4778063 4779212 ENSMUSG00000102275 0 - 0.1806
1 1 1 1 1 4807788 4848410 ENSMUSG00000025903 0 + 110.078
更好的可讀性:
awk -v col=7 -v n=5 '
function repeat(v, n,i)
{
for(i=1; i<=n; i++)
printf("%s%s",(i==1?"":OFS),v)
}
{
for(i=1; i<=NF; i++)
printf("%s%s",(i==col?repeat($i,n):$i),i==NF?RS:OFS)
}
' infile
歡迎來到堆棧溢出,所以你想要最後一列打印998次或乘以998次?截至目前,我的答案僅僅是打印最後一欄998次。 – RavinderSingh13