$ echo "$(lastlog | grep $USER | awk '{print $(NF-5)" "$(NF-3)" "$(NF-4)" "$(NF-2)" "$(NF-1)" "$(NF-0)}')"
Thu 7 Sep 05:56:35 +0100 2023
値が次のような場合は、ビットをORに置き換えたい+0100
(この出力はロケールによって変わることがあることを知っています)。BST
GMT
+0000
$(NF-1)
私は条件付きで変数値の設定をテストしましたが、awk printコマンドに変数を入れる方法がわかりません。
また、(日付)が1桁の場合と2桁の場合の間に余分な$(NF-5)
スペースを追加したいと思います。$(NF-3)
$(NF-3)
これを行うための最良の方法は何ですか?
答え1
タイムゾーンの場合は、if
2つの可能な値を確認したいので、 - ステートメントを追加することをお勧めします。
if($(NF-1)=="+0000") {zone="GMT"}
else if ($(NF-1)=="+0100") {zone="BST"}
else {zone=$(NF-1)}
zone
次に、上記で定義した変数を印刷します。 ( print zone
)
print
ifステートメントを/コマンドに直接入れることはできませんが、->printf
のように変更が1つしかない場合は、次のように動作します。+0000
GMT
print $(NF-1)=="+0000"?"GMT":$(NF-1)
スペースを埋めるために$(NF-3)
サウンドモードが使用されますprintf
。
printf "%2s",$(NF-3)
簡単に言うと:
awk '{
if($(NF-1)=="+0000") {zone="GMT"}
else if ($(NF-1)=="+0100") {zone="BST"}
else {zone=$(NF-1)}
printf "%s %2s %s %s %s %s",$(NF-5),$(NF-3),$(NF-4),$(NF-2),zone,$(NF-0)
}'