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