给程序相同的输入文件100次

问题描述 投票:0回答:3

所以我有这个行脚本:

head -n5 numbers.txt | ./ex2-2

我希望ex2-2将number.txt的前五行作为输入100次。

ex2-2是一个作为输入1 2 3 4 5 1 2 3 4 5的程序

提前致谢! (请将答案保留在一行,因为我的任务包括用一行查找答案)

linux bash file input file-io
3个回答
1
投票

单线无环

$ input=$(head -n 5 numbers.txt); printf "${input}\n%.0s" {1..100} | ...

按照要求...

awk救援!

$ awk 'NR<6{a=a sep $0; sep=ORS} END{for(i=1;i<=100;i++) print a}' numbers.txt | ...

或者如果输入文件很长,您可以短路

$ awk '{a=a sep $0; sep=ORS} NR==6{exit} END{for(i=1;i<5;i++) print a}' numbers.txt | ...

1
投票

您也可以使用GNU Parallel这样做:

export input=$(head -n 5 numbers.txt)
parallel -N 0 'echo "$input"' ::: {1..100}

或者,所有在一行:

export input=$(head -n 5 numbers.txt); parallel -N0 'echo "$input"' ::: {1..100}

或者,更短但效率更低:

parallel -N0 head -n 5 numbers.txt ::: {0..99}

0
投票

捕获内容并使用循环重复它是有道理的:

input=$(head -n 5 numbers.txt)
max=100

for ((i=0; i<max; i++)); do
  printf '%s\n' "$input"
done | ./ex2-2

作为一个单行,只需添加分号代替空格:

input=$(head -n 5 numbers.txt); max=100; for ((i=0; i<max; i++)); do printf '%s\n' "$input"; done | ./ex2-2
© www.soinside.com 2019 - 2024. All rights reserved.