【发布时间】:2010-12-14 19:57:52
【问题描述】:
我有以下 bash 脚本,我将使用它来分析当前目录中的所有报告文件:
#!/bin/bash
# methods
analyzeStructuralErrors()
{
# do something with $1
}
# main
reportFiles=`find $PWD -name "*_report*.txt"`;
for f in $reportFiles
do
echo "Processing $f"
analyzeStructuralErrors $f
done
我的报告文件格式如下:
Error Code for Issue X - Description Text - Number of errors.
col1_name,col2_name,col3_name,col4_name,col5_name,col6_name
1143-1-1411-247-1-72953-1
1143-2-1411-247-436-72953-1
2211-1-1888-204-442-22222-1
Error Code for Issue Y - Description Text - Number of errors.
col1_name,col2_name,col3_name,col4_name,col5_name,col6_name
Other data
.
.
.
我正在寻找一种方法来检查每个文件并汇总报告数据。在上面的示例中,我们有两个 X 类型的独特问题,我想在 analyzeStructural 中处理它们。在此例程中可以忽略其他类型的问题。任何人都可以就如何做到这一点提供建议吗?我想读取每一行,直到基本上遇到下一个错误,然后将该数据放入某种数据结构中。
【问题讨论】:
-
我看到一期“X”型和一期“Y”型,而不是两期“X”型。另外,请提供您想用每种错误类型解析出的确切内容。
-
X 型的两期分别是 1143 和 2211。
-
@Amir: en.wikipedia.org/wiki/AWK ?
-
旁注:避免使用“for FILE in
...; do”来遍历文件,检查“find ... | while IFS=$'\n' read -r FILE; do”或类似。 -
@tokland:除非你可以使用 globbing:
for file in *