Questions tagged «grep»

grep是Unix命令行实用程序,它在输入中搜索匹配(或不匹配)正则表达式的行并打印结果。使用此标签可查询有关如何使用grep功能,如何编写可与grep一起使用的正则表达式以及一般用法的问题。因为grep现在可以在类似Unix的环境中使用(例如Windows上的Cygwin),所以您也可以使用此标记来解决兼容性问题以及版本和软件环境之间的差异。

2
匹配所有仅包含一个'/'字符的字符串
我有一个很长的文件,包含文件路径,每行一个。我想检索列出的所有目录只有1级深度。因此,我只想提取其中包含单行的那些行/: 我想要:./somedir 我不要:./somedir/someotherdir 我可以使用grep和/或正则表达式吗?
2 regex  grep 

1
获取xargs:尝试在文件中查找文本时未终止的引用
我正在使用带有bash shell的Mac 10.9.5。我正在尝试在一组文件中搜索文本的实例,但出于某种原因,在一个特定的目录中,我得到了这个奇怪的“未终止引用”错误... Daves-MacBook-Pro:sbadmin davea$ find src/main/webapp/WEB-INF/ -name "*" | xargs grep 'addresses' > /tmp/addr xargs: unterminated quote 任何想法如何解决这个问题?
1 bash  grep  xargs 

4
从文件中删除文本
我想从中删除一些文字 file1.txt。 我把文本放在文件中 tmp 并做: grep -f tmp file.txt 但它只给我带来了不同。 问题是如何消除差异 file.txt。
1 linux  sed  awk  grep 


2
如果发现字符串出现次数,请过滤行?
如果包含行,则需要过滤并显示日志行 正好2个逗号 ,并且不包含特定字符串。我需要哪个linux命令, awk, grep,表达是什么? 对于第二个条件,我使用这个: awk '!/specificstring/' ./log/file/path 两个逗号检查我不知道如何输入。通常行就像这两个: arbitrary,arbitrary,arbitrary,arbitrary arbitrary,arbitrary,arbitrary 需要第二种类型的线。 试过这样的事情: grep -P '[^,]+[,][^,]+[,][^,]+[,]"specificstring"[^,]+' ./log/file/path 如何排除“特定字符串”?
1 linux  grep  logging  awk 

2
从JS文件中的代码语句中提取URLS
所有, 我想提取文件夹中所有js文件中的代码语句中提到的所有URL。 对于例如如果一个js文件包含这段代码: var myURL="http://yahoo.com/signup" //var myURL="http://yahoo.com/sign" --commented out 然后当我的脚本运行时,输出应该只是“ http://yahoo.com/signup “。目前我正在使用grep来提取URL。输出包含输出中的两个语句。我不想在输出中使用注释的URL。 目前我正在使用基本的grep语句 cat somefile.js | grep "http[s]\?://" 所有URL都将是http / https,并将在js文件中的语句中声明。 我想微调这个grep语句只输出URLS(不包括注释的URL)而不是完整的语句。我怎样才能微调这个grep语句?
1 bash  grep  regex 

1
文件中的Cygwin'grep'需要永远
我尝试使用Cygwin来模拟一些很酷的Linux搜索功能,当我在文件中执行grep(12个文本文件 - 不大)时,它需要永远。我用了 grep -rne word 我可以手动更快地找到这个词(即使没有Ctrl+ F)。有什么理由不起作用吗?怎么解决? PS:我使用Cygwin控制台。

3
如何搜索文件以匹配整行?
我有一个命令发送到stdout一系列数字,每个数字都在一个新行上。我需要确定列表中是否存在特定数字。匹配需要精确,而不是子集。例如,一种不起作用的简单方法是: /run/command/outputing/numbers | grep -c <numberToSearch> 在搜索'456'时,我的这个版本在以下列表中给出了误报: 1234567 98765 23 1771 如果计数非零,则找到匹配项,或者如果它为零,则该数字不在列表中。 这个问题是numberToSearch可以匹配一行中数字的子序列,而我只想在整行上点击。我查看了grep的手册页,并没有看到任何只匹配整行的方法。有没有办法做到这一点,或者我会更好地使用awk或sed其他工具?我需要一个二进制答案,以确定是否存在要搜索的号码。
1 grep  sed  awk 


1
删除Redhat 5.9中grep的行号输出
到目前为止我还没有使用RH 5.9。我从6开始,但我们有5.9台服务器。5.9的语法与某些东西略有不同。例如,grep将在实际搜索之前输出一个数字行。这是一个例子: grep john /etc/shadow 38:john:!$1$/LW9cOmI$.QidFjJmq5xjKfmKugLAy0:16311:0:99999:7::: 38是那里的行号。在RH 6中,这已得到修复。我们使用的是grep(GNU grep)2.5.1。我不是sysadmin所以更新grep不太可能发生。但是,我想知道是否有解决方法。我习惯了RH 6中的grep。这是一个问题,因为当我做这样的事情时,它实际上是错误的字段: cat /etc/shadow |grep john | awk -F: '{print $2}' john 实际上,字段2应指示密码字段。grep中有一个选项可以禁用这些数字行吗?我搜索过但还没找到答案。谢谢。

1
如何grep多个@类型?
我正在使用Linux Centos 6-64。 如何在输入文件夹中更改以下命令,该命令仅检索使用@编写的电子邮件: grep -E -o -r "[A-Za-z0-9][A-Za-z0-9._%+-]+@[A-Za-z0-9][A-Za-z0-9.-]+\.[A-Za-z]{2,6}" /inputfolder/ | sort | uniq > "/outputfolder/result.txt" 检索下面所有这些@格式的电子邮件? info@example.com info@example.com info(at)example.com info[at]example.com info%26%23064%3Bexample.com info%40example.com 如果可能的话,命令在一行中。谢谢
1 linux  grep 

1
grep regex包含日志时间戳
我正在使用ORA-xxxxx错误代码来处理许多与Oracle相关的错误的日志文件。所有日志条目都以时间戳开头(例如:2017-11-29 23:51:46,372)。一些日志条目是多行的 - 就像那些带有Java异常堆栈跟踪的日志条目,其中ORA-xxxxx代码深入到日志条目行下面的时间戳。 查找ORA-xxxxx代码的日志时间戳的正则表达式是什么? 一旦我得到上述正则表达式,接下来就是按日期对它们进行排序,以找出上次发生某个ORA-xxxxx错误的时间。 PS:grep或perl regex命令会做。 谢谢, 日志文件的示例 2017-11-29 23:51:46,013 (Foo.java:67) FATAL - foo.bar()-got exception during load of zzz javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not execute query at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614) at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:76) . . . at java.util.TimerThread.mainLoop(Timer.java:555) at java.util.TimerThread.run(Timer.java:505) Caused by: org.hibernate.exception.GenericJDBCException: could not execute query at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114) at …
1 regex  grep  perl 

1
Grep与字符串比较:仅返回“高于”时间戳的行
我有一个电子邮件日志文件,记录电子邮件何时发出,以及谁。这被记录下来,所以有一个拉链和解压缩的日志文件混合使用一周左右。 我目前(成功)收回与特定电子邮件匹配的所有行 sudo find /var/log/exim4/ -type f -exec zgrep -i "foobar@gmail.com" "{}" \\; | sort 这让我收回发送给的所有电子邮件foobar@gmail.com。到现在为止还挺好。 我现在要做的是在特定时间之后发送所有电子邮件,无论收件人是谁。这应该很简单(我认为),因为所有日志文件行都以时间戳开头 - 它们具有以下格式: 2015-04-20 18:01:05 H=(fake.org) [180.108.175.57] F=<fake@fake.org> rejected RCPT <webmaster@charanga.com>: relay not permitted 2015-04-20 18:01:05 H=(fake.org) [180.108.175.57] F=<fake@fake.org> rejected RCPT <webmaster@charanga.com>: relay not permitted 2015-04-20 18:06:33 H=(bar.net) [111.176.77.1] F=<foo@bar.net> rejected RCPT <service@charanga.com>: relay …
1 bash  grep  zgrep 

1
监控并有条件地继续输出命令
在bash中,我有一个在屏幕上运行的命令有效: while true do echo $RANDOM sleep 1 done 其输出是: 12396 19683 31641 ... 我想把它管道化为像grep / awk这样的东西,我匹配一个特定的模式,比如12345,我想要一个命令来运行。 我不想捕获正在运行的命令的完整输出 - 它可能会在找到匹配项之前运行很长时间并且我不想在机器上浪费空间。 这可以在bash中轻松完成吗? 在一个理想的世界里,我还希望输出继续打印到终端,这样我就可以自己远程监控输出,但这并不是绝对必要的。

1
如何在域列表中grep文字匹配
我有一个充满主机的主机文件,如下所示: 127.0.0.1 home-domain.net 127.0.0.1 here.home-domain.net 127.0.0.1 home-domain.netn 127.0.0.1 home.domain.net 127.0.0.1 home.domain.net.some 在ash shell脚本(BusyBox)中,我只想要文字匹配(es) match=home.domain.net grep " $match$" file 这正确地匹配“home.domain.net”,但也“home-domain.net”我在“$ match $”中使用的空间是将其限制在主机名的开头,而$是行结束。我怎么才能匹配“home.domain.net”的文字?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.