
jot -r 4 0 255
基本的に 0 から 255 までの範囲で 4 つの乱数を出力する非常に単純なコマンドがあります。
> jot -r 4 0 255
66
14
244
155
出力を次のようにフォーマットするにはどうすればよいですか66.14.244.155
?
答え1
コマンドの結果間の区切り文字列としてピリオド文字を使用しますjot
。ターミナルを開いて次のように入力します。
jot -s "." 4 0 255
の結果からman jot
:
-s弦 文字列で区切られたデータを出力します。通常、改行によってデータが区切られます。
他の場合には、スペース文字が適切な区切り文字列になります。
答え2
t
同様の出力を含むテストファイルを作成した
$ cat t
66
14
244
155
出力を再フォーマットする方法は多数あり、任意のコマンドからパイプしたり、cat
次の例のようにしたりできます。
bashを
read
このように使う$ cat t | while read i; do echo -n "$i."; done; echo 66.14.244.155.
各エントリを読み取り、末尾にドットを付けて改行なしでエコーします (末尾に改行を付けるために、最後に単純なエコーを追加します)。
tr
各改行をドットに変換し、末尾にドットを付けて改行なしとする$ cat t | tr '\n' '.' 66.14.244.155.
同じだが非常に短い
awk
$ cat t | tr '\n' '.' | awk 'ORS="."' 66.14.244.155.
tr
(またはawk
)を再度実行しますが、末尾のドットを改行に修正します$ cat t | tr '\n' '.' | sed 's/.$/\n/' 66.14.244.155
sed
これらすべて明らかにより速く、より複雑ではない末尾のドットと改行なし$ cat t | sed -e ':a; N; $!ba; s/\n/./g' 66.14.244.155
paste
s
erial とelimiter オプションを使用できますd
が、末尾にドットや改行は不要です。$ cat t | paste -sd "." - 66.14.244.155