入力文字列のn倍の文字列を出力できる組み込みLinuxコマンドはありますか??
入力文字列のn倍の文字列を出力できる組み込みLinuxコマンドはありますか??
回答:
adrian@Fourier:~$ printf 'HelloWorld\n%.0s' {1..5}
HelloWorld
HelloWorld
HelloWorld
HelloWorld
HelloWorld
adrian@Fourier:~$printf、それが繰り返し自由のための「ループ」、フォーマット文字列に余分な引数を適用することです。「過剰」とは、%プレースホルダーよりも多くの引数があることを意味します。
                    かなりポータブルな昔ながらの方法を次に示します。
yes "HelloWorld" | head -n 10これは、ブレース展開を使用したAdrian Petrescuの回答のより一般的なバージョンです。
for i in {1..5}
do
    echo "HelloWorld"
doneそれは次と同等です:
for i in 1 2 3 4 5これは、パイクの答えのもう少し簡潔で動的なバージョンです。
printf -v spaces '%*s' 10 ''; printf '%s\n' ${spaces// /ten}sed -n 'H;${x;s/\n//gp}'か、sed -n ':t;${s/\n//gp};N;bt'別のやっているecho $(yes "HelloWorld" | head -n 10)文字列の各コピーの間にスペースを追加しています。さらに別の方法は、それをパイプ処理することtr -d '\n'です。これにより、最後の改行も削除されます。
                    yes解決策は、私が(その出力変動)コマンドを複製したかったので、私は、まさに必要でした。したがって:yes "$(my-command)" | head -n 2
                    これはパラメーター化でき、一時変数FWIWは不要です。
printf "%${N}s" | sed 's/ /blah/g'または、$Nbash配列のサイズが次の場合:
echo ${ARR[@]/*/blah}printfの形式指定子に混在させないでください。データにフォーマット文字列が含まれている場合はどうなりますか?これは、「精度」(長さ)を動的に指定する正しい方法printf '%*s'  "$N"です。
                    すでに述べたいくつかの良い方法。古き良き時代を忘れることはできませんseq。
[john @ awesome] $ for i in `seq 5`; 「こんにちは」をエコーします;完了 こんにちは こんにちは こんにちは こんにちは こんにちは
{i..j}トリックが空の範囲を返すことはありません。)
                    おそらくより一般的で便利な別の方法:
adrian@Fourier:~$ n=5
adrian@Fourier:~$ for (( c=1; c<=n; c++)) ; do echo "HelloWorld" ; done
HelloWorld
HelloWorld
HelloWorld
HelloWorld
HelloWorld
adrian@Fourier:~$ bashシェルは、ほとんどの人が考えるよりも強力です:)
yes、printf、for i in {1..5})場合にnゼロであり、それは空の文字列を返すによる比較するための数学的表記することも1の状態を存在せず、それは1だけオフセットしていることは容易である(変化させることにより、例えば、<=への<)
                    繰り返しn、n-1カンマを次の間に入れて{}ください:
$ echo 'helloworld'{,,}
helloworld helloworld helloworld最初のエコーの後に「helloworld」を2回繰り返します。
n、変数から取得したい場合はどうすればいいですか?
                    BSDを使用してseqいる場合は、を使用できます。
$ seq -f "Hello, world" 5
Hello, world
Hello, world
Hello, world
Hello, world
Hello, worldseq (GNU coreutils) 8.25、これによりseq: format 'Hello, world' has no % directive、フォーマットディレクティブが存在するように強制されます。GNU coreutilsが使用されています(例:多くのLinuxディストリビューションおよびCygwin)。BSD seqでのみ機能するという情報が欠落している人のために、ここに情報を含めます。
                    x繰り返しの間に改行を自動的に取得しないPerlの演算子のようなものが必要だと仮定します。
x() {
  # usage: x string num
  for i in $(seq 1 $2); do printf "%s" "$1"; done
  # print a newline only if the string does not end in a newline
  [[ "$1" == "${1%$'\n'}" ]] && echo ""
}
x Hi 10  # ==> HiHiHiHiHiHiHiHiHiHi
x $'Hello World!\n' 3bashでfor記述できないため、ループを明示的に使用しました{1..$n}。変数置換の前にブレース展開が行われます。
正確にはLinuxに組み込まれていませんが、Pythonがインストールされている場合。
python
>>>var = "string"
>>>var*nまたは、コメンターが示唆したように、1行で:
python -c 'print "This is a test.\n" * 10'