macOS系统中xargs占位符替换次数受限的问题求助
macOS系统中xargs占位符替换次数受限的问题求助
我最近碰到个头疼的问题:想把一段文本重复输出好几次,用来构建一些需要在不同位置用到相同文本的命令,但发现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
能明显看到第6、7个RRRR根本没被替换成目标文本。
后来我换用printf来构建命令,结果还是一样的问题:
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
依然是到第5个占位符之后就停止替换了。
我以为是-n参数的限制,特意把值设得很大,结果还是没用:
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
甚至尝试了-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
我的系统相关信息:
- 操作系统:macOS 13.2
- xargs版本:August 4, 2015
备注:内容来源于stack exchange,提问作者nelaaro
相关产品推荐
相关产品推荐

