$ 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 命令中。
我还想在(日期)是单个数字时在$(NF-5)
和之间添加额外的空格,但在它是两位数时则不添加空格。$(NF-3)
$(NF-3)
如何最好地做到这一点?
答案1
对于时区,我建议添加一个if
- 语句,因为您想检查两个可能的值:
if($(NF-1)=="+0000") {zone="GMT"}
else if ($(NF-1)=="+0100") {zone="BST"}
else {zone=$(NF-1)}
然后打印zone
上面定义的变量。 ( print zone
)
if 语句不能直接放入print
/printf
命令中,而如果您只有一个更改,例如+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)
}'