使用 Linux 多次重复每一行

Repeat each line multiple times by using Linux

我有 1 个包含一些数据的文件。喜欢

my_file:

1 3 a
4 8 b
9 14 c

output_file:

a
a
b
b
b
b
c
c
c
c
c

我试图多次重复每一行(3-1 = 2、8-4 =4、14-9 = 5)。我正在绑定这个命令:

while read i; do seq 1 2| xargs -i -- echo $i;done < my_file.txt 

但是它对所有行重复了 2 次。我想将每一行重复 N 次。可能吗?如果可以,请给我一些建议。

提前致谢。

将每一行读入3个变量,并使用前两个变量作为重复的范围。

while read -r start end char; do
    for ((i = start; i < end; i++)); do
        echo "$char"
    done
done < my_file.txt

为此使用 awk:

$ awk '{for(i=1;i<=-;i++)print }' file

输出:

a
a
b
b
b
b
c
c
c
c
c

如果 是一个选项:

perl -ne '@A=split;print "$A[2]\n" x ($A[1]-$A[0])' my_file.txt

对于每一行,它 split 是空白处的行,@A 是保存该结果的数组。

然后它打印数组中的第三个元素 ($A[2]) + 一个换行符,重复 (x) 的次数,如果你取第 2 列中的值减去第 1 列中的值。