bash - 如何使用 bash 从 log_file.txt 中提取数据
问题描述
我有一个master_log_file.txt,顺序如下:
TransferDate|DeptID|FolderID |DocID |AFPFileName|NoOfAcct|
20181024 |1 |LRREM1.20181015.CGLOG|test |xxxx |12
20181024 |2 |LRREM2.20181013.CGLOG|home |XyyX |2
20181024 |3 |LRREM3.20181013.CGLOG|office|xy |5
20181024 |4 |LRREM4.20181013.CGLOG|store |yy |10
我想创建一个 bash 文件,根据 FolderID 和 DeptID 将所有日志数据分离到单独的日志文件中。有人可以给我一个关于如何做到这一点的例子,因为我是这批东西的新手。提前致谢。以下是根据 mjuarez 建议的我的 bash 文件。
echo off
for folder in `grep -v TransferDate log_test.txt | cut -d "|" -f3 | sort | uniq`; do
grep ${folder} separated.txt > F:/Work/FLP Code/test/folder_${folder}.txt;
done
pause
我错过了什么吗?
解决方案
首先,请参阅此链接以显示您已尝试过的内容,并且通常值得花时间让其他人觉得您已尽职尽责。
第二:这种格式是否一致?它显然是格式化的,所以我假设它是。
cut -c 14-41 logFile | grep -v DeptID | sort -u |
while read key
do IFS="$IFS|" read dept folder <<< "$key";
grep "$key" < logFile > $folder.$dept;
done
14-41 是你提到的键的范围,我用cut
.
grep -v
用它们剥离标题sort -u
以获得定义每个输出文件的一组唯一组合。通过管道将其传输到 while 读取循环。
为 $IFS 的临时分配添加管道字符,以将部门和文件夹分配给我用来为您的输出创建不同文件名的变量,然后grep
将每个组合的键分配给相关文件。
这能满足你的需要吗?
我看到有人打败了我,但我不认为文件夹值总是一致的,因为你单独提到了部门。
推荐阅读
- node.js - Nodejs multer-sftp文件上传问题
- sql-server - 如果 AlwaysOn 可用性组中的一个数据库出现故障,是否会启动故障转移?
- php - 登录表单什么都不做,只刷新页面
- clearcase - 在 clearcase 命令 lstype 中使用日期范围作为类型选择器是可能的吗?
- actions-on-google - 特征 action.devices.traits.Modes 似乎不起作用
- c# - 检查文件夹是否存在于文档文件夹中
- vba - 使用 VB 查找 Outlook Exchange 配置文件创建日期
- angular - 如何在 mat-table 上应用分页
- android - 如何捕捉图像?
- java - 是否可以在不使用多个 catch 语句的情况下捕获多个异常并对它们执行不同的逻辑?