【问题标题】:Why I can't split the string?为什么我不能拆分字符串?
【发布时间】:2011-12-29 08:27:01
【问题描述】:

我想通过 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。

【问题讨论】:

    标签: shell aix


    【解决方案1】:

    这是因为您将 while 循环的输出传递给 grep "java.lang.Exception"

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

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

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

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

    【讨论】:

    • ic...我以为我已经通过 grep 处理了输入。永远不知道它是 grep 处理的输出。
    猜你喜欢
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多