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)
但我没有得到任何结果。我认为这是一项相当简单的任务,但显然我错过了一些东西。有什么建议吗?
它可以很容易地完成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)