为什么我不能拆分字符串?

时间:2011-11-15 09:10:12

标签: shell aix

我想通过shell脚本读取文件,并逐行处理。我想从每一行中提取2个字段。这是我的代码:

#!/bin/bsh
mlist=`ls *.log.2011-11-1* | grep -v error`
for log in $mlist
do
        while read line
        do
                echo ${line} | awk -F"/" '{print $4}'  #This produce nothing
                echo ${line}                           #This work and print each line
        done < $log | grep "java.lang.Exception"
done

这是输入文件中的一个示例行:

<ERROR> LimitFilter.WebContainer : 4 11-14-2011 21:56:55 - java.lang.Exception: File - /AAA/BBB/CCC/DDDDDDDD.PDF does not exist

如果我不使用bsh,我可以使用ksh,结果是一样的。我们这里没有bash。

1 个答案:

答案 0 :(得分:4)

这是因为您通过grep "java.lang.Exception"传递了while循环的输出。

echo $line | awk -F"/" '{print $4}'的输出为CCC。如果通过grep传送,则不会打印任何内容,因为CCC与搜索模式不匹配。

尝试删除| grep "java.lang.Exception",您会看到循环输出正确。

另一种方法可能是删除while循环,而只是使用:

grep "java.lang.Exception" $log | awk -F"/" '{print $4}'