如何将文件的内容与列的最后一个数字的增量连接起来

how to concatenate the content of a file with a increment of last number of the column

我有一个包含一些内容的文件,需要重复第 n 次并增加最后一列号的增量。

Input content of a file:
TCTA    7   ccta    TCTA    1
TCTA    8   ccta    TCTA    1
TCTA    9   ccta    TCTA    1
TCTA    10  ccta    TCTA    1
TCTA    11  ccta    TCTA    1
TCTA    12  ccta    TCTA    1
TCTA    13  ccta    TCTA    1
TCTA    14  ccta    TCTA    1
TCTA    15  ccta    TCTA    1
TCTA    16  ccta    TCTA    1
TCTA    17  ccta    TCTA    1

Expected output:
TCTA    7   ccta    TCTA    1
TCTA    8   ccta    TCTA    1
TCTA    9   ccta    TCTA    1
TCTA    10  ccta    TCTA    1
TCTA    11  ccta    TCTA    1
TCTA    12  ccta    TCTA    1
TCTA    13  ccta    TCTA    1
TCTA    14  ccta    TCTA    1
TCTA    15  ccta    TCTA    1
TCTA    16  ccta    TCTA    1
TCTA    17  ccta    TCTA    1
TCTA    7   ccta    TCTA    2
TCTA    8   ccta    TCTA    2
TCTA    9   ccta    TCTA    2
TCTA    10  ccta    TCTA    2
TCTA    11  ccta    TCTA    2
TCTA    12  ccta    TCTA    2
TCTA    13  ccta    TCTA    2
TCTA    14  ccta    TCTA    2
TCTA    15  ccta    TCTA    2
TCTA    16  ccta    TCTA    2
TCTA    17  ccta    TCTA    2
TCTA    7   ccta    TCTA    3
TCTA    8   ccta    TCTA    3
TCTA    9   ccta    TCTA    3
TCTA    10  ccta    TCTA    3
TCTA    11  ccta    TCTA    3
TCTA    12  ccta    TCTA    3
TCTA    13  ccta    TCTA    3
TCTA    14  ccta    TCTA    3
TCTA    15  ccta    TCTA    3
TCTA    16  ccta    TCTA    3
TCTA    17  ccta    TCTA    3
TCTA    7   ccta    TCTA    n
TCTA    8   ccta    TCTA    n
TCTA    9   ccta    TCTA    n
TCTA    10  ccta    TCTA    n
TCTA    11  ccta    TCTA    n
TCTA    12  ccta    TCTA    n
TCTA    13  ccta    TCTA    n
TCTA    14  ccta    TCTA    n
TCTA    15  ccta    TCTA    n
TCTA    16  ccta    TCTA    n
TCTA    17  ccta    TCTA    n

我尝试了以下但无法使最后一列递增第 n 次。

for i in {1..5};do 
   cat file.txt >> out.txt
done

我需要最后一列增加第n次。

使用 gnu-awk 解决方案:

awk -v n=3 '
{
   rec = rec [=10=] RS
}
1
END {
   for (i=2; i<=n; ++i)
      printf "%s", gensub(/[0-9]+(\n|$)/, i "\1", "g", rec)
}' file

TCTA    7   ccta    TCTA    1
TCTA    8   ccta    TCTA    1
TCTA    9   ccta    TCTA    1
TCTA    10  ccta    TCTA    1
TCTA    11  ccta    TCTA    1
TCTA    12  ccta    TCTA    1
TCTA    13  ccta    TCTA    1
TCTA    14  ccta    TCTA    1
TCTA    15  ccta    TCTA    1
TCTA    16  ccta    TCTA    1
TCTA    17  ccta    TCTA    1
TCTA    7   ccta    TCTA    2
TCTA    8   ccta    TCTA    2
TCTA    9   ccta    TCTA    2
TCTA    10  ccta    TCTA    2
TCTA    11  ccta    TCTA    2
TCTA    12  ccta    TCTA    2
TCTA    13  ccta    TCTA    2
TCTA    14  ccta    TCTA    2
TCTA    15  ccta    TCTA    2
TCTA    16  ccta    TCTA    2
TCTA    17  ccta    TCTA    2
TCTA    7   ccta    TCTA    3
TCTA    8   ccta    TCTA    3
TCTA    9   ccta    TCTA    3
TCTA    10  ccta    TCTA    3
TCTA    11  ccta    TCTA    3
TCTA    12  ccta    TCTA    3
TCTA    13  ccta    TCTA    3
TCTA    14  ccta    TCTA    3
TCTA    15  ccta    TCTA    3
TCTA    16  ccta    TCTA    3
TCTA    17  ccta    TCTA    3

这可能适合您(GNU 并行和 sed):

parallel -kq sed -E 's/\S+$/$((&+{}))/;s/.*/echo "&"/e' file ::: {0..2}

如果要用增量替换最后一个字段,请使用:

parallel -kq sed -E 's/\S+$/{}/' file ::: {1..3}