文本中的每一行重复 n 次

efr*_*rem 3 command-line bash awk

我有一个看起来像这样的文件

888
924
873
1374
.....
Run Code Online (Sandbox Code Playgroud)

这些点表示我还有更多的字符串,大约 3000 个。我想重复每个字符串 n 次,得到这样的东西;

888
888
888
924
924
924
873
873
873
....
Run Code Online (Sandbox Code Playgroud)

我尝试编写一个小的 bash 代码:

#! bin/bash

while IFS= read -r line

do 
    awk 'NR==line'
    awk 'NR==line'
    awk 'NR==line'
done < /<PATH_TO_FILE>
Run Code Online (Sandbox Code Playgroud)

但我没有得到任何结果。我认为这是一项相当简单的任务,但显然我错过了一些东西。有什么建议吗?

Syl*_*eau 5

它可以很容易地完成perl

perl -ne 'print $_ x 3' file
Run Code Online (Sandbox Code Playgroud)

上面的 oneliner 输出:

$ perl -ne 'print $_ x 3' file
888
888
888
924
924
924
873
873
873
1374
1374
1374
Run Code Online (Sandbox Code Playgroud)

只需根据您的需要更改示例值即可。

解决方案awk

awk '{for (i = 1; i <= 3; i++) print $1}' file
Run Code Online (Sandbox Code Playgroud)

要修复您的 bash 脚本,我将使用以下代码片段:

#!/bin/bash

while read line
do
    for i in {1..3}; do echo $line; done
done < ./file
Run Code Online (Sandbox Code Playgroud)