我想复制一些文本。Xargs 最多只能复制 5 个项目。我不知道是否有更好的方法来实现这一点。
echo "sometext " | xargs -n 9 -t -I RRRR echo RRRR RRRR RRRR RRRR RRRR RRRR RRRR
echo sometext sometext sometext sometext sometext RRRR RRRR
sometext sometext sometext sometext sometext RRRR RRRR
最终,这应该以打印的形式结束,以构建一些在不同位置需要相同文本的命令。
echo "sometext " | xargs -t -I RRRR printf " cmd1 %s cmd2 %s cmd3 %s cmd4 %s cmd5 %s cmd6 %s cmd7 %s" RRRR RRRR RRRR RRRR RRRR RRRR RRRR
printf cmd1 %s cmd2 %s cmd3 %s cmd4 %s cmd5 %s cmd6 %s cmd7 %s sometext sometext sometext sometext sometext RRRR RRRR
cmd1 sometext cmd2 sometext cmd3 sometext cmd4 sometext cmd5 sometext cmd6 RRRR cmd7 RRRR⏎
在第五个参数之后,xargs 停止进行替换。
echo "sometext " | xargs -n 9000 -t -I RRRR printf " cmd1 %s cmd2 %s cmd3 %s cmd4 %s cmd5 %s cmd6 %s cmd7 %s" RRRR RRRR RRRR RRRR RRRR RRRR RRRR
printf cmd1 %s cmd2 %s cmd3 %s cmd4 %s cmd5 %s cmd6 %s cmd7 %s sometext sometext sometext sometext sometext RRRR RRRR
cmd1 sometext cmd2 sometext cmd3 sometext cmd4 sometext cmd5 sometext cmd6 RRRR cmd7 RRRR⏎
我尝试使用 -n 和 -L 选项,但它们也不起作用。
echo "sometext " | xargs -L 1 -t -I RRRR printf " cmd1 %s cmd2 %s cmd3 %s cmd4 %s cmd5 %s cmd6 %s cmd7 %s" RRRR RRRR RRRR RRRR RRRR RRRR RRRR
printf cmd1 %s cmd2 %s cmd3 %s cmd4 %s cmd5 %s cmd6 %s cmd7 %s sometext sometext sometext sometext sometext RRRR RRRR
cmd1 sometext cmd2 sometext cmd3 sometext cmd4 sometext cmd5 sometext cmd6 RRRR cmd7 RRRR⏎
我的操作系统详细信息
xargs version
macOS 13.2
August 4, 2015
macOS 13.2
答案1
不知道您在做什么,但这xargs
可能是错误的解决方案。
一个简单的方法bash
是
for i in $(seq 1 10) ; do
echo -n "sometext "
if [ $i = 10 ] ; then
echo
fi
done
或者
yes sometext | head -11 | paste -sd' '
或者,如果你真的喜欢xargs
:
echo sometext | xargs yes 2>/dev/null | head -12 | paste -sd' '