使用 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 是一个选项:
perl -ne '@A=split;print "$A[2]\n" x ($A[1]-$A[0])' my_file.txt
对于每一行,它 split
是空白处的行,@A
是保存该结果的数组。
然后它打印数组中的第三个元素 ($A[2]
) + 一个换行符,重复 (x
) 的次数,如果你取第 2 列中的值减去第 1 列中的值。
我有 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 是一个选项:
perl -ne '@A=split;print "$A[2]\n" x ($A[1]-$A[0])' my_file.txt
对于每一行,它 split
是空白处的行,@A
是保存该结果的数组。
然后它打印数组中的第三个元素 ($A[2]
) + 一个换行符,重复 (x
) 的次数,如果你取第 2 列中的值减去第 1 列中的值。