我读到xargs很适合一次处理一行命令的输出(并且它是)。我的脚本中有以下行。
./gen-data | awk '{printf $2 " "; printf $1=$2=$3=""; gsub (" ", "", $0);if(length($0) == 0){ print "0000"} else{print $0}}' | xargs -t -n2 -P1 bash -c 'datatojson "$@"' _
它产生正确的输出,毫无疑问。然而,gen-data产生类似于1000行的东西,而我真正想要的是这个命令在每一行之后执行,而不是在1000行之后执行(它明显停止以获得更多输入)。
以下是gen-data的样子:
candump $interface &
while true; do
while read p; do
cansend $interface $(echo $p | awk 'NF>1{print $NF}');
done < <(shuf $indoc)
done
(cansend
将数据发送到接口并candump
从该接口读取并将其输出到屏幕上,但我打赌这不太相关)。在任何情况下candump
似乎都是连续的流输出,但是当我将其输入awk
并且xargs
,它变得更加分散。是因为我用过shuf
吗?我认为,因为它通过界面,并在另一侧阅读,它将比shuf提供的更少。
@FelipeLema我只是尝试了
—
user3475234 2015年
cat
而不是shuf
它正在做同样的事情。不知道我怎么能把它送进那个循环,我在脚本编写方面不是很有经验。
shuf
吗?这个脚本不使用它吗?(我知道它应该,但有必要排除它)