xargs und echo begrenzte Anzahl von Ersetzungen

xargs und echo begrenzte Anzahl von Ersetzungen

Ich möchte einen Text mehrmals duplizieren. Xargs kann nicht mehr als 5 Elemente duplizieren. Ich weiß nicht, ob es dafür eine bessere Möglichkeit gibt.

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

Dies sollte letztendlich im Druck enden, um einige Befehle zu erstellen, die den gleichen Text an verschiedenen Stellen benötigen.

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⏎   

Nach dem fünften Parameter beendet xargs die Ersetzungen.

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⏎ 

Ich habe versucht, die Optionen -n und -L zu verwenden, aber sie haben auch nicht funktioniert.

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⏎

Meine Betriebssystemdetails

xargs version
macOS 13.2                                                                                                                   
August 4, 2015                                                                                                                   
macOS 13.2

Antwort1

Ich weiß nicht, was Sie tun, aber xargses ist wahrscheinlich die falsche Lösung.

Ein einfacher Einstieg bashwäre

for i in $(seq 1 10) ; do
    echo -n "sometext "
    if [ $i = 10 ] ; then
        echo
    fi
done

Oder

yes sometext | head -11 | paste -sd' '

Oder, wenn Sie es wirklich mögen xargs:

echo sometext | xargs yes 2>/dev/null | head -12 | paste -sd' '

verwandte Informationen