jotコマンドの出力をフォーマットする方法

jotコマンドの出力をフォーマットする方法

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
    
  • pasteserial とelimiter オプションを使用できますdが、末尾にドットや改行は不要です。

    $ cat t | paste -sd "." -
    66.14.244.155
    

ソース

関連情報