Articles of grep

如何在Linux中search两个不同date的日志文件

我正在使用基于RPM的发行版,并且我想dynamicsearch日志文件以查看当天的date和昨天的date以输出报告。 string必须是dynamic的(没有egrep“\ b2012-10- [20-30] \ b”),这意味着我可以采取相同的单行或脚本,search今天的date和昨天的date的文件,并打印一些输出。 基本上search日志文件的特定条目。 这是我得到的,但我想用dynamic的东西来取代egrep: grep "No Such User Here" /var/log/maillog | egrep "\b2012-10-2[3-4]\b" | cut -d "<" -f 3 | egrep -o '\b[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b' | cut -d "@" -f 2 | sort -d |uniq -ci | awk -F" " '{ print "Domain: " $2 " has been sent " $1 " messages […]

Bash脚本:跳过文件和grep

Bash脚本不是我最强的一点。 我有一个文件结构为 % comment filename1 pattern-to-search1 filename1 pattern-to-search2 … 我想编写一个脚本来为filename的每一行的所有pattern-to-mat的文件名。 到目前为止,我有 while read file p do if [ "${file:0:1}" != "%" ] then grep -o "$p" $file | wc -l fi done echo -e "\nDone." 但是它不会跳过以%开头的文件。 有任何想法吗?

我怎样才能取代在Linux中的特定文件夹中find的所有电子邮件地址

我在一些文件夹中有一些脚本。 像/var/www/sites 现在我想要replace所有文件夹和子文件夹中的脚本中硬编码的所有电子邮件地址,并replace为我的电子邮件地址 我怎样才能做到这一点。 我可以find使用 grep -rn "abc@gmail.com" /var/www/sites/ 但我不知道如何使用正则expression式和replace

如何在日志文件中grep下一个variables的实例?

所以我试图parsingFTP日志,看看是否某个用户安全login。 到目前为止,我有这个拉用户login后的几行 cat proftpd.log.2 | grep -B 3 "USER $sillyvariable" 这是它创build的示例输出 ::ffff:127.0.0.0 UNKNOWN ftp [04/Jan/2013:11:03:06 -0800] "AUTH TLS" 234 – ::ffff:127.0.0.0 UNKNOWN ftp [04/Jan/2013:11:03:06 -0800] "USER $sillyvariable" 331 – 现在这是我想要的一个完美的例子,它显示了AUTH TLS消息和IP匹配 。 然而,情况并非总是如此,因为许多用户经常login和注销,大部分时间输出都是混乱的。 有没有办法,我可以grep的USER $sillyvariable并find他/她的匹配的IP包含在前面的行“AUTH TLS”,所以我可以知道他们安全地login? 我想你可以说我想grep的用户,然后grep向后看,如果他们的连接(匹配的IP)是安全的。 我有点卡住了,真的可以用一些帮助。 谢谢!

sed两种模式search,并在第二种模式发生后追加线

以下sed问题在过去的两天里给了我很多的麻烦。 我有以下文件(iptables) : someline someline *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] someline 我想使用sedsearch模式*filter ,如果匹配,然后search第二个模式[0:0] ,然后在第二个模式的最后一次出现后添加一行。 这(理想情况下)会导致: someline someline *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] TESTLINEADDEDBYSED someline 这里的论坛给了我一个好的开始,但是我不能解决这个具体问题。 我到目前为止有以下解决scheme,但它添加第一个出现的第二个模式[0:0] : sed -n '/\*filter/{:a;N;/^\n/s/^\n//;/\[0:0\]/{!ba;p;s/.*/TESTLINEADDEDBYSED/;};ba}; p' file 我是在第二个分支我会消耗(读:skip?)第一次出现[0:0]的假设.* 我在这里误解了什么?

pcregrep与多个捕获组

在pcregrep中的-oX选项有问题。 用不同的数字指定多个这样的选项只会输出最后指定的捕获组。 数据: docker ps | awk '{print $1}' | tail -n +2 | xargs docker inspect 输出: [{ "ID": "4e7f430263c33c25970134760ea96f9b57452680a8cfdf062270f5f7fe385135", …. #lots of additional lines "Ports": { "5000/tcp": [ { "HostIp": "127.0.0.1", "HostPort": "5000" } ], "5984/tcp": [ { "HostIp": "127.0.0.1", "HostPort": "5984" } ] } },{ #same as above, but with a different […]

解决方法,当它用pipe道从grep不同的模式pipe道几行?

这是一个正在进行的工作,我正在寻找更多知识的人的build议(电脑是我的爱好,而不是我的专业)。 这个脚本是为了组织一个电视节目目录(把每个文件重命名为Ep1ode.ext的惯例S01E01.Title,并创build一个原始名称的符号链接)。 我喜欢写这篇文章,我不希望别人花太多时间。 我想现在我最大的“走狗”是: 修复grep + cut输出中“<_a href =”(减去下划线)的发生。 用wiki中的awk抓取正确的文本块(根据季节#) (如果有什么看起来效率低下,请让我知道 – 我正在学习) 我一直在左右这些论坛上,随着我的进展而取得进展。 我已经用尽了大部分类似的问题。 (这些论坛是我build立这个目标的100%)。 ## Find show name and season (directories nested: /show/season) show1=$(cd .. ; pwd) show="${show1##*/}" season=("${PWD##*/}") IFS=$'\n' ## Download list of episodes for given season wget -q -O- –header\="Accept-Encoding: gzip" https://en.wikipedia.org/wiki/List_of_$show\_episodes | gunzip > tmp.html ## Working on first awk/sed […]

parsinglog4j和Javaexception日志

我有以下格式的错误日志: 2014-01-30 16:15:04:720 GMT [commandHandler-thread-3] ERROR com.example.Main 123-1234567-1234567 – Something bad happened. java.lang.RuntimeException: Something bad happened. at … Caused by: java.lang.RuntimeException: … at … at … … 13 more Caused by: java.lang.RuntimeException: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update at … at … … 18 more Caused by: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update […]

按时间sorting访问日志

访问日志是我工作中非常重要的部分。 有什么办法可以按时间sorting特殊要求吗? 比如:grep“search”access_log | 按时间sorting? 我们可以使用grep“search”access_log |获得时间 awk'{print $ 8}'

perl grep在ssh2-> exec中找不到任何东西

我devise了一个程序,遍历我的所有应用程序中不同Solaris(Unix)框中的每个日志文件,并查找某个错误。 所以,我devise了这样的程序: my $ssh2 = Net::SSH2->new(); $ssh2->connect($host) or die "Unable to connect Host $@ \n"; $ssh2->auth_keyboard($user,$pass) or die "Unable to login $@ \n"; $chan1 = $ssh2->channel(); $chan1->exec("find /apps/appName/loc/Logs/server/ -type f | xargs grep \"CVS Call\" "); while(<$chan1>) { print $_ . "\n"; } 如果我只想说一句话(只是'CVS'),那就行了。 但是,第二个我添加一个空格或一个点没有find任何东西。 我尝试用[[:space:]]或[:space:]replace空格,但仍不显示任何结果。 我知道日志文件包含此错误的事实。 我也试过: $chan1->exec("find /apps/appName/loc/Logs/server/ -type f -exec grep 'CVS […]