首页 > 解决方案 > 如何使用 bash/awk 将每个文件的日期显示为每行的第一个元素?

问题描述

我有 7 个 txt 文件,它们是 AIX 7.2 上 df -m 命令的输出。

我只需要为一个文件系统保留第一列和第二列。所以我这样做:

cat *.txt | grep hd4 | awk '{print $1","$2}' > test1.txt

输出是:

/dev/hd4,384.00
/dev/hd4,394.00
/dev/hd4,354.00
/dev/hd4,384.00
/dev/hd4,484.00
/dev/hd4,324.00
/dev/hd4,384.00

每个文件都是从 crontab 创建的,它们的文件名是:

df_command-2019-09-03-12:50:00.txt
df_command-2019-08-28-12:59:00.txt
df_command-2019-08-29-12:51:00.txt
df_command-2019-08-30-12:52:00.txt
df_command-2019-08-31-12:53:00.txt
df_command-2019-09-01-12:54:00.txt
df_command-2019-09-02-12:55:00.txt

我只想保留文件名上的日期,我可以这样做:

test=df_command-2019-09-03-12:50:00.txt
echo $test | cut -d'-' -f2,3,4

输出:

2019-09-03

但我想把每个日期作为我的 test1.txt 每一行的第一个元素:

2019-08-28,/dev/hd4,384.00
2019-08-29,/dev/hd4,394.00
2019-08-30,/dev/hd4,354.00
2019-08-31,/dev/hd4,384.00
2019-09-01,/dev/hd4,484.00
2019-09-02,/dev/hd4,324.00
2019-09-03,/dev/hd4,384.00

你有什么想法吗?

标签: awkkshaix

解决方案


awk可能会:

awk '/hd4/ {split(FILENAME,a,"-");print a[2]"-"a[3]"-"a[4]","$1","$2}' *.txt > test1.txt
  • /hd4/找到符合hd4
  • split(FILENAME,a,"-")将文件名拆分为数组a拆分-
  • print a[2]"-"a[3]"-"a[4]","$1","$2打印年-月-日,字段 1,字段 2
  • > test1.txt到文件 test1.txt

推荐阅读