awk - 如何使用 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
你有什么想法吗?
解决方案
这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
推荐阅读
- bash - Bash 脚本在 psql 的列中返回一个子字符串而不是整个值
- python - 以月为单位的日期差和 Python 中的平均值
- reactjs - 如何处理来自 OnChange - ReactJS 的参数?
- performance - AWK 是否会在将多个打印语句写入光盘之前对其进行缓冲?
- java - 如何正确安装 WSO2 API 管理器?
- python - 如何选择具有特定值的行?
- acumatica - 执行操作时如何强制用户输入自动提交和保存?
- sql - 在 SQL 中查找一对行
- performance - DataProc 处理时间超过 3 小时,比预期的不到 15 分钟
- html - 处理工具提示中的转义字符