我试图解析超过20,000条记录的数据。每条记录有4个字段,前缀为2个字母数字值。以下是2条记录的示例。我目前有一个基于链接使用Java的膨胀解决方案:Parsing HTML Data using Java (DOM parse)。但是我不打算使用那个解决方案,因为仅仅分离记录就太过分了。是否有使用VBS,Python或任何其他语言的解决方案可以根据我已经使用的逻辑分离出字段?还是另一种逻辑方法?
100000000 SMP008483
|--- Category Western
|--- Model Ford
|--- Asset Delivered Date ?
|--- Scheduled ?
100000001 SMP008484
|--- Category Eastern
|--- Model Chevrolet
|--- Asset Delivered Date ?
|--- Scheduled ?
预期输出在这里:
ID1 ID2 Category Model Asset Delivered Date Scheduled
100000000 SMP008483 Western Ford ? ?
100000001 SMP008484 Eastern Chevrolet ? ?
答案 0 :(得分:0)
这个有点蹩脚,但它有效。你走了:
#!/bin/bash
i=0
while IFS= read -r line;do
echo $line | egrep -q '^[0-9]+'
if test $? -eq 0; then
id1=$(echo $line | cut -d' ' -f1)
id2=$(echo $line | cut -d' ' -f2)
((i++))
fi
echo $line | egrep -q 'Category'
if test $? -eq 0; then
cat=$(echo $line | sed -e 's/^.*Category//')
((i++))
fi
echo $line | egrep -q 'Model'
if test $? -eq 0; then
model=$(echo $line | sed -e 's/^.*Model//')
((i++))
fi
echo $line | egrep -q 'Asset Delivered Date'
if test $? -eq 0; then
date=$(echo $line | sed -e 's/^.*Asset Delivered Date//')
((i++))
fi
echo $line | egrep -q 'Scheduled'
if test $? -eq 0; then
sch=$(echo $line | sed -e 's/^.*Scheduled//')
((i++))
fi
if test $i -eq 5; then
echo -e "${id1}\t${id2}\t${cat}\t${model}\t${date}\t${sch}"
i=0
fi
done <<< "$(cat ${1})"
*不要忘记添加所有字段,因为如果你这样做会破坏。