前のコマンド出力の名前/値のペアのソート

前のコマンド出力の名前/値のペアのソート

このhostnamectlコマンドは、ホスト名を含むが完全修飾ドメイン名(FQDN)を含まないいくつかの正しい形式の情報を出力しますhostname -f

Bash出力フォーマット制御の詳細については、これら2つのコマンドを1つのコマンドにまとめたいと思います。ここで、2番目のコマンドは最初のコマンドの出力アライメントに従います。

hostnamectl ; fqdn=$(hostname -f) ; echo -e "\t\tFQDN:\t${fqdn}"

FQDN:ただし、最初のサブコマンドの出力と一貫性を得ることはできません。

スクリプトを書かなくても、最初の出力のソートに従って2番目の出力をフォーマットできるコマンドはありますか?そうではありませんが、尋ねなければならないと思いました。

ベストアンサー1

ソートを静的に設定することに満足している場合は、次のことができます。

hostnamectl ; fqdn=$(hostname -f) ; printf "%18s: %s\n" "FQDN" "${fqdn}"

指定子は、18文字の幅フィールドに文字列を%18s右揃えで印刷します。printf%-18s左揃え。)

awk を使用してすべての出力のサイズを変更することもできます。

(hostnamectl ; fqdn=$(hostname -f) ; echo "FQDN: ${fqdn}") |
    awk -F: '{printf "%20s:%s\n", $1, $2}'

:1行に1つしかないと仮定)

:または、awkスクリプトが最初の行の位置を確認し、すべてをその位置に揃えるようにします。

... | awk -F: 'NR == 1 {w = index($0, ":")} {printf "%*s:%s\n", w, $1, $2}'

(ツールを使用して出力を確認したhostnamectl後、FQDNが印刷されるコロン位置を提供し、そしてまた、出力を端末に送信するには、混乱するリダイレクト地獄が必要です。この方法ははるかに簡単です。 )

おすすめ記事