如何在文件中排除包含日期或括号的所有行

时间:2015-01-16 13:47:03

标签: bash awk sed grep

如何在文件中排除包含日期和括号的所有行

就我而言:

2015-01-16 12:51:34,787 | [D] | query.Selao | ref:5463| 13 | Selao .select | Binding 4 to 432| [ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'
java.lang.NullPointerException
        at com.api.base.dataaccess.elen(elen.java:424)
2015-01-16 12:51:34,788 | [D] | query.Selao | ref:5464| 14 | Selao .select | Binding 5 to 433| [ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'
   <list>
    <Filters class="com.base.Filter">
     <Negated value="false"/>
    </Filters>
   </list>

排除后预期:

java.lang.NullPointerException
        at com.api.base.dataaccess.elen(elen.java:424)

3 个答案:

答案 0 :(得分:2)

egrep -v '([0-9]{4}(-[0-9]{2}){2})|(\[.*\])' YourFile

但您帖子中的<LIST>呢?没有日期或括号,但没有预期的输出?

如果括号不是[],而是<>

egrep -v '([0-9]{4}(-[0-9]{2}){2})|(<.*>)' YourFile
所有3

egrep -v '([0-9]{4}(-[0-9]{2}){2})|(<.*>)|(\[.*\])' YourFile

答案 1 :(得分:1)

使用awk,

$ awk '!/[0-9]{4}-[0-9]{2}-[0-9]{2}|<.*>/' file
java.lang.NullPointerException
        at com.api.base.dataaccess.elen(elen.java:424)

OR

grep -v '[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\|<.*>' file

答案 2 :(得分:1)

sed解决方案如何删除包含特定模式的所有行:

sed '/20[0-9][0-9]-[0-9]/d;/\<.*\>/d' file