我有一個包含一些內容的檔案,需要重復第 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 次。
uj5u.com熱心網友回復:
使用 gnu-awk 解決方案:
awk -v n=3 '
{
rec = rec $0 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
uj5u.com熱心網友回復:
這可能對您有用(GNU 并行和 sed):
parallel -kq sed -E 's/\S $/$((& {}))/;s/.*/echo "&"/e' file ::: {0..2}
如果要以增量替換最后一個欄位,請使用:
parallel -kq sed -E 's/\S $/{}/' file ::: {1..3}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/341207.html
