
テキストを数回複製したいのですが、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⏎
5 番目のパラメータの後、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⏎
私のOSの詳細
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' '