xargs 和 echo 有限的替換數量

xargs 和 echo 有限的替換數量

我想將一些文字複製幾次。 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' '

相關內容