![使用内联分隔符重复该行 n 次](https://linux22.com/image/151830/%E4%BD%BF%E7%94%A8%E5%86%85%E8%81%94%E5%88%86%E9%9A%94%E7%AC%A6%E9%87%8D%E5%A4%8D%E8%AF%A5%E8%A1%8C%20n%20%E6%AC%A1.png)
我想使用内联分隔符重复该行 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
。