使用内联分隔符重复该行 n 次

使用内联分隔符重复该行 n 次

我想使用内联分隔符重复该行 n 次(即不生成额外的行)。例如,对于包含两行的文件 example.csv

0.1\r\n
0.2\r\n

n=3 且逗号作为分隔符的结果是

0.1,0.1,0.1\r\n
0.2,0.2,0.2\r\n

我尝试使用 n=2 的粘贴命令:

paste -d, example.csv example.csv

但是,EOL 也已粘贴:

0.1\r,0.1\r\n
0.2\r,0.2\r\n

答案1

修复行尾后

dos2unix example.csv

您可以使用printf重复文件名n次数。

paste -d, $(printf 'example.csv %.0s' {1..10})

或者 if$n是一个变量,使用seq而不是大括号扩展:

paste -d, $(printf 'example.csv %.0s' $(seq 1 $n))

通过

答案2

假设不需要保持行尾不变并且可以将其转换为 unix 样式,请执行以下操作:

dos2unix file

对于第二步使用awk

awk '{for(i=1;i<=3;i++){if(i>1)printf ",";printf $0};printf "\n"}'

awk 将循环构造字符串,并在其中重复指定的i<=3部分次数。

if需要确保您,只有重复之间的时间。

最终结果将是 unix 风格的输出。如果需要,您可以将其转换回 dos unix2dos

相关内容