所以我有这个行脚本:
head -n5 numbers.txt | ./ex2-2
我希望ex2-2将number.txt的前五行作为输入100次。
ex2-2是一个作为输入1 2 3 4 5 1 2 3 4 5
的程序
提前致谢! (请将答案保留在一行,因为我的任务包括用一行查找答案)
单线无环
$ 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 | ...
您也可以使用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}
捕获内容并使用循环重复它是有道理的:
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