"1234567890"
lengthまでの繰り返しで構成された文字列が必要です72
。ゼロ以外の数字を含む同じ長さの別の文字列。数字0の代わりに最初から数字が増加することを取得します1
。
だから文字列の場合
"1234567890123456789012345678901234567890"
次のような印刷結果が得られます。
1 2 3 4
1234567890123456789012345678901234567890
私はこれを最後までしたい。72
すでに空白でゼロ以外の値を削除し始めていますが、その場所でインデックスを増やすことは0
実際の問題です。
wz="1234567890" # Basic measure of ten
hg="${wz}${wz}${wz}${wz}${wz}${wz}${wz}12"
ha=${hg//[123456789]/" "}
printf '%s\n' "$ha"
printf '%s\n' "$hg"
答え1
この関数は必要な繰り返し(最大200文字)を実行し、引数に従ってそれを切り捨てます。
#! /bin/bash
Ruler () { # (lth)
local Tens Digs j
printf -v Tens '%10d' {1..20}
for (( j = 1; j <= 20; j++)); do Digs="${Digs}1234567890"; done
printf '%s\n%s\n' "${Tens:0:${1}}" "${Digs:0:${1}}"
}
Ruler 72
Ruler 32
このように:
$ ./Hdsup
1 2 3 4 5 6 7
123456789012345678901234567890123456789012345678901234567890123456789012
1 2 3
12345678901234567890123456789012
答え2
次awk
のプログラムは、それぞれ一連の数字からなる2つの「ルーラー」を生成します。これ第二行には、数字の間に空白なしで1から10まで(10を0に置き換える)番号が付けられます。最初の行にも同様に番号が付けられていますが、各番号の間にはいくつかのスペースがあります。
プログラムは2つのオプションのコマンドラインパラメータを使用します。最初の引数は2番目の定規の全幅(デフォルトは80)で、2番目の引数は最初の定規番号のステップサイズまたはタブの幅(共通のタブ文字の幅なので、デフォルトは8)です。 Unix端末)。
例を実行してください:
$ ./ruler
1 2 3 4 5 6 7 8 9 0
12345678901234567890123456789012345678901234567890123456789012345678901234567890
$ ./ruler 72
1 2 3 4 5 6 7 8 9
123456789012345678901234567890123456789012345678901234567890123456789012
$ ./ruler 72 10
1 2 3 4 5 6 7
123456789012345678901234567890123456789012345678901234567890123456789012
$ ./ruler 122 6
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012
スクリプトruler
:
#!/usr/bin/awk -f
BEGIN {
width = ARGC >= 2 ? ARGV[1] : 80
step = ARGC >= 3 ? ARGV[2] : 8
while (++i <= width) {
if (i%step == 0) line1 = line1 sprintf("%*s", step, (i/step)%10)
line2 = line2 (i%10)
}
print line1
print line2
}
line2
これは、基本的にループが繰り返されるたびに、文字列(2番目の定規)に次の数字を追加し、各反復で文字列while
(最初の定規)に数値を含む正しいサイズ変更フィールドを追加します。step
line1
step
このコードには幅の制限はなく、コマンドライン引数の削除や検証はありません。