kornshell模式检测与删除

kornshell模式检测与删除,shell,unix,ksh,Shell,Unix,Ksh,我正在与Korn Shell合作,尝试检测平面文件中不需要的错误消息。平面文件有多个错误记录,其中某些错误记录可以删除,其他错误记录需要保留。错误如下: 消息:TR0405严重性:04 收到的应用程序数据将被忽略。 废话废话 需要删除,而带有任何其他代码的邮件需要保留在中。我在删除此记录时遇到问题,同时无法保持下一个记录的完整性。我想从检测到的模式中删除 消息:TR0405严重性:04 到下一个检测到的模式 信息: 我当前的代码: sed -e "/Message: TR0405 Se

我正在与Korn Shell合作,尝试检测平面文件中不需要的错误消息。平面文件有多个错误记录,其中某些错误记录可以删除,其他错误记录需要保留。错误如下:

消息:TR0405严重性:04 收到的应用程序数据将被忽略。 废话废话

需要删除,而带有任何其他代码的邮件需要保留在中。我在删除此记录时遇到问题,同时无法保持下一个记录的完整性。我想从检测到的模式中删除

消息:TR0405严重性:04

到下一个检测到的模式

信息:

我当前的代码:

sed -e "/Message: TR0405 Severity: 04/,/Message:/{//p;d;}" test.txt > newTest.txt
  rm test.txt
  mv newTest.txt test.txt
数据示例:

消息:TR0405严重性:04

收到的应用程序数据将被忽略

废话废话

消息:TR0405严重性:04

收到的应用程序数据将被忽略

废话废话

消息:TR0405严重性:04

收到的应用程序数据将被忽略

废话废话

更多的废话

消息:TR0425严重性:04

定时错误

废话废话


比如:(根据新示例进行编辑)

#/bin/ksh
日志文件=$1
读行时;做
如果[[$line==Message*];然后
标志=0
案例$line in
*TR0405*)是否继续
;;
“”)继续
;;
*)打印$line>>logresult.txt
标志=1
;;
以撒
elif[$flag-等式1]];然后
打印$line>>logresult.txt
fi
完成<$Logfile

您可以在case语句中添加任何错误代码。以您的数据为例,它运行良好。

错误报告可以出现在多行上,我如何解释这一点?您应该始终给出有意义的数据示例。你能提供一个真实的例子吗?好的,我编辑了问题中的例子,以更好地反映我所拥有的。可能
print-r--“$line”
不仅仅是
print$line
#!/bin/ksh

Logfile=$1

while read line; do
    if [[ $line == Message* ]]; then
        flag=0
        case $line in
            *TR0405*)       continue
                            ;;
            "")     continue
                    ;;
            *)      print $line >> logresult.txt
                    flag=1
                    ;;
        esac
    elif [[ $flag -eq 1 ]]; then
        print $line >> logresult.txt
    fi
done < $Logfile