我想为df
输出的每一行添加日期。
我尝试过:
df -m | awk '{print `date +%Y-%m`";"$1";"$2";"$3 }'
...但是它不起作用。
如何添加日期?
答案 0 :(得分:1)
您可以使用这种方式:
df -m | awk -v dt=$(date "+%Y-%m") '{print dt "::", $0}'
我们使用-v dt=$(date "+%Y-%m")
在shell中执行date命令,并将其通过参数awk
传递给dt
。
如果只需要df
命令输出的前三列,请使用:
df -m | awk -v dt=$(date "+%Y-%m") '{print dt, $1, $2, $3}'
答案 1 :(得分:1)
这里是替代方法:
df -m | awk '{print strftime("%Y-%m"), $0}'
这是上面命令的输出:
$ 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
和相应的输出:
$ 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
$
答案 2 :(得分:1)
Perl解决方案。
df -m | perl -MPOSIX=strftime -alpe '$_ = strftime("%Y-%M ", localtime) . "@F[0..2]"'
命令行选项:
strftime()
函数@F
$_
中,执行代码,然后打印$_
代码通过将日期($_
)与输入记录的前三列(strftime("%Y-%M ", localtime)
)连接来更新@F[0 .. 2]
。