Bash 如何读取日志文件

Bash 如何读取日志文件,bash,Bash,我想在一个单词后面加上下面的单词。 Atm my bash脚本只写搜索的单词,不写下面的行。 每一行都以日期开头,但不包括以下几行。 在我的例子中,使用“cut”选项编写“while”命令是否更好? 我怎样才能让它运行 read -p "what you want to search?: " Search grep -i "${Search}" "$1" 2017-03-15 15:23:02,814 ERROR - (8564@xxxxxxx-PC) java.lang.NoCl

我想在一个单词后面加上下面的单词。 Atm my bash脚本只写搜索的单词,不写下面的行。 每一行都以日期开头,但不包括以下几行。 在我的例子中,使用“cut”选项编写“while”命令是否更好? 我怎样才能让它运行

read -p "what you want to search?: " Search
grep -i "${Search}" "$1"






2017-03-15 15:23:02,814 ERROR - (8564@xxxxxxx-PC) 
java.lang.NoClassDefFoundError: Could not initialize class 
    at java.util.concurrent.FutureTask$Sync.innerRun
    at java.util.concurrent.FutureTask.run
    at java.util.concurrent.ThreadPoolExecutor.runWorker                 java.util.concurrent.ThreadPoolExecutor$Worker.run
    at java.lang.Thread.run(Thread.java:722)
    at java.lang.Thread.run(Thread.java:722)
    at java.lang.Thread.run(Thread.java:722)
    at com.xxxxxxx.batch.converter.compart.CompartWrapper.transform
    at com.xxxxxxx.batch.converter.compart.CompartWrapper.convert
    at com.xxxxxxx.batch.converter.AbstractConverter.run
    at com.xxxxxxx.batch.converter.fo.FoConverter.foToFormatUnequalFo
    at com.xxxxxxx.batch.converter.fo.FoConverter.convert
    at com.xxxxxxx.batch.converter.fo.FoConverter.call
2017-03-15 15:23:02,847 ERROR - (8564@xxxxxxx-PC)
java.lang.NoClassDefFoundError: Could not initialize
    at java.util.concurrent.FutureTask$Sync.innerRun
    at java.util.concurrent.FutureTask.run
    at java.util.concurrent.ThreadPoolExecutor.runWorker
    at java.util.concurrent.ThreadPoolExecutor$Worker.run
    at java.lang.Thread.run

“-A1”返回一个匹配的行加上后面的一行。调整数字以满足您的需要。

两周后,我找到了在日志文件中搜索的方法 但我需要你的意见

#!/bin/bash -e 
if [ -e "$1" ] ; 
then
        input="$1"
else
        echo "need name file after script" >&2
        exit
fi
erra()     { grep --color -i -n -P "${search}|\t" "$1";}
infa()     { grep --color -i -n -P "${search}" "$1";}  
searcht()  { [[ $search == [eE]* ]];}
searchiw() { [[ $search == [iIwW]* ]];}
conti()    { read -r -p "another request?[y/n]: " ans
            if [[ $ans == [nN]* ]]
              then
              exit
            fi;}
while :
do
            read -r -p "what do you search?: " "search"
            if  searcht "$1"                
              then
            erra "$1"
            conti "$1"
              else
            searchiw "$1"   
            infa "$1"
            conti "$1" 
            fi
done

请将示例输入和该示例输入的所需输出添加到您的问题中。您的
grep
命令中的引号已关闭,搜索词没有结束引号。是的,抱歉,我已修改,但这与我的问题2017-03-15 15:23:02743信息不匹配-(8564@xxxxxxx-PC)获取2017-03-15 15:23:02746信息的时间(8564@xxxxxxx-(个人电脑)获取时间2017-03-15 15:23:02813错误-(8564@xxxxxxx-PC)生成java.lang.NoClassDefFoundError时出错:无法初始化com.xxxxxxx.batch.converter.compart.CompartWrapper.transform处的类,该类位于com.xxxxxxx.batch.converter.compart.CompartWrapper 2017-03-15 15:23:02814错误-(8564@xxxxxxx-(个人电脑)java.lang.NoClassDefFoundError:无法在java.util.concurrent.FutureTask$Sync.innerRun处初始化。。。谢谢,但这帮助直到新行或其他错误行,但目标是到达所有错误文件,在1行或20行之后,他们再次开始使用信息和警告,如果我写-A1(或更多),则再次使用错误项行他们也会给我显示信息或警告栏..我想while comand会有所帮助,但我不明白怎么做哦,对不起,一开始我没有完全理解。听起来你可以用正则表达式得到你想要的。看一看这篇奇怪的相似帖子:哇,这比我能理解的更复杂,但我不想放弃我想如果我读while(同时读param1 param2),下一步要理解param2(错误项)如何不从与错误相关的行中分离需要我们的意见吗?如果那样是最好的方式,“最好”是什么意思是?最好的,最清楚的,最正确的…我知道在日志文件中搜索有很多方法,但我不知道这份工作,我真的很想知道我搜索文件的方法是否例外通常的方法是你似乎不明白的是1)“最佳”有很多不同的含义,取决于它的衡量方式。这些指标中有许多相互矛盾。因此,在不限定所考虑的指标的情况下问什么是“最佳”是毫无意义的,2)堆栈溢出在这里主要不是回答基于意见的问题。
#!/bin/bash -e 
if [ -e "$1" ] ; 
then
        input="$1"
else
        echo "need name file after script" >&2
        exit
fi
erra()     { grep --color -i -n -P "${search}|\t" "$1";}
infa()     { grep --color -i -n -P "${search}" "$1";}  
searcht()  { [[ $search == [eE]* ]];}
searchiw() { [[ $search == [iIwW]* ]];}
conti()    { read -r -p "another request?[y/n]: " ans
            if [[ $ans == [nN]* ]]
              then
              exit
            fi;}
while :
do
            read -r -p "what do you search?: " "search"
            if  searcht "$1"                
              then
            erra "$1"
            conti "$1"
              else
            searchiw "$1"   
            infa "$1"
            conti "$1" 
            fi
done