[英]Add timestamp for each line on the df output command?
我想为 df output 命令的每一行添加日期。
我尝试:
df -m | awk '{print `date +%Y-%m`";"$1";"$2";"$3 }'
但它不起作用...
任何想法?
这是一个替代方案:
df -m | awk '{print strftime("%Y-%m"), $0}'
这是上面命令中的 output:
$ df -m | awk '{print strftime("%Y-%m"), $0}'
2019-10 Filesystem 1M-blocks Used Available Use% Mounted on
2019-10 devtmpfs 9852 0 9852 0% /dev
2019-10 tmpfs 9871 132 9740 2% /dev/shm
2019-10 tmpfs 9871 2 9869 1% /run
2019-10 /dev/mapper/fedora_canvas-root 50141 14731 32834 31% /
2019-10 tmpfs 9871 1 9871 1% /tmp
2019-10 /dev/sda5 976 243 667 27% /boot
2019-10 /dev/mapper/fedora_canvas-home 1277155 217435 994777 18% /home
2019-10 tmpfs 1975 63 1912 4% /run/user/1000
$
这是一个替代版本,仅在 OP 上打印您想要的 3 列:
df -m | awk '{print strftime("%Y-%m"), $1, $2, $3}' | column -t
以及对应的output:
$ df -m | awk '{print strftime("%Y-%m"), $1, $2, $3}' | column -t
2019-10 Filesystem 1M-blocks Used
2019-10 devtmpfs 9852 0
2019-10 tmpfs 9871 132
2019-10 tmpfs 9871 2
2019-10 /dev/mapper/fedora_canvas-root 50141 14731
2019-10 tmpfs 9871 1
2019-10 /dev/sda5 976 243
2019-10 /dev/mapper/fedora_canvas-home 1277155 217435
2019-10 tmpfs 1975 63
$
Perl 解决方案。
df -m | perl -MPOSIX=strftime -alpe '$_ = strftime("%Y-%M ", localtime) . "@F[0..2]"'
命令行选项:
strftime()
function@F
$_
,执行代码然后打印$_
代码通过将日期 ( strftime("%Y-%M ", localtime)
) 与输入记录的前三列 ( @F[0.. 2]
) 连接来更新$_
。
你可以这样使用:
df -m | awk -v dt=$(date "+%Y-%m") '{print dt "::", $0}'
我们使用-v dt=$(date "+%Y-%m")
在 shell 中执行 date 命令,并在参数dt
中将其传递给awk
。
如果您只需要df
命令 output 的前 3 列,请使用:
df -m | awk -v dt=$(date "+%Y-%m") '{print dt, $1, $2, $3}'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.