草庐IT

preg-grep

全部标签

linux - 如何有效地使用 grep?

我有大量小文件要搜索。我一直在寻找一个好的事实上的多线程版本的grep但找不到任何东西。如何改进grep的使用?到目前为止,我正在这样做:grep-R"string">>Strings 最佳答案 如果您在多核处理器上安装了xargs,您可以从以下内容中受益,以防有人感兴趣。环境:Processor:DualQuad-core2.4GHzMemory:32GBNumberoffiles:584450TotalSize:~35GB测试:1.找到必要的文件,将它们传送到xargs并告诉它执行8个实例。timefind./-name"*.e

regex - 无法使用 sed 或 grep 提取捕获组

我想从键值对语法中提取值对,但我不能。我试过的例子:echoemployee_id=1234|sed's/employee_id=\([0-9]+\)/\1/g'但这给出了employee_id=1234而不是1234实际上是捕获组。我在这里做错了什么?我也试过了:echoemployee_id=1234|egrep-oemployee_id=([0-9]+)但没有成功。 最佳答案 1.使用grep-Eo:(因为egrep已弃用)echo'employee_id=1234'|grep-Eo'[0-9]+'12342。使用grep-o

linux - 为什么两次使用 grep 时没有显示输出?

基本上我想知道为什么这不输出任何东西:tail--follow=namefile.txt|grepsomething|grepsomething_else你可以假设它应该产生输出我已经运行了另一行来确认catfile.txt|grepsomething|grepsomething_else似乎您不能多次通过管道输出tail!?有谁知道这笔交易是什么,有解决办法吗?编辑:要回答到目前为止的问题,该文件肯定包含grep应该显示的内容。如果grep是这样完成的,作为证据:tail--follow=namefile.txt|grepsomething输出正确显示,但如果使用它来代替:tail-

linux - 如果我们想在版本化的源代码中搜索,使用 git grep 比使用普通 grep 更好吗?

在git存储库中,使用gitgrep与旧的grep有什么区别/好处?一个例子是什么? 最佳答案 两者非常相似。主要区别在于gitgrep默认在git跟踪的文件中搜索。示例如果我想在我的项目中找到foo,我可以使用gitgrep或独立的grep:gitgrepfoogrep-Rfoo.gitgrep版本将只搜索git跟踪的文件,而grep版本将搜索目录中的所有内容。到目前为止很相似;根据您想要实现的目标,任何一个都可能更好。如果我们想将搜索限制为仅.rb文件怎么办?gitgrepfoo--*.rbgrep-R--include=*.r

linux - 来自 tar.gz 的 grep 不提取 [更快的一个]

我正在尝试从十几个文件.tar.gz中grep模式,但它非常慢正在使用tar-ztffile.tar.gz|whilereadFILENAMEdoiftar-zxffile.tar.gz"$FILENAME"-O|grep"string">/dev/nullthenecho"$FILENAMEcontainsstring"fidone 最佳答案 如果你有zgrep你可以使用zgrep-astringfile.tar.gz 关于linux-来自tar.gz的grep不提取[更快的一个],我

linux - 使用 grep 查找文件中的内容并在匹配时移动它们

我正在使用grep生成我需要移动的文件列表:grep-L-r'Subject:\[SPAM\]'.如何将此列表传递给mv命令并将文件移动到其他位置? 最佳答案 如果您想查找和移动与您的模式不匹配的文件(在此示例中移动不包含'Subject\[SPAM\]'的文件),请使用:grep-L-Z-r'Subject:\[SPAM\]'.|xargs-0-I{}mv{}DIR-Z表示在文件名后加零(\0)输出(因此空格不用作分隔符)。xargs-0表示将\0解释为分隔符。-L表示查找与模式不匹配的文件。如果要移动与您的模式匹配的文件,请将-

linux - 当 grep "\\"XXFile 我得到 "Trailing Backslash"

现在我想查找是否有包含'\'字符的行。我试过grep"\\"XXFile但它提示“尾随反斜杠”。但是当我尝试grep'\\'XXFile时,就可以了。谁能解释为什么第一个案例无法运行?谢谢。 最佳答案 区别在于shell如何处理反斜杠:当您在双引号中写入"\\"时,shell会解释反斜杠转义并最终将字符串\传递给grep。然后,Grep会看到一个没有后面字符的反斜杠,因此它会发出“尾随反斜杠”警告。如果要使用双引号,则需要应用两级转义,一层用于shell,一层用于grep。结果:"\\\\".当你用单引号写'\\'时,shell不做

Grep表示行的开头和结尾?

我有一个文件,我想在其中查找以-rwx或drwx开头并以任意数字结尾的行。我有这个,但它不太正确。有什么想法吗?grep[^.rwx]*[0-9]usrLog.txt 最佳答案 棘手的部分是一个正则表达式,它包含一个破折号作为字符类中的有效字符之一。对于(正常)字符类,破折号必须紧跟在开始之后,对于否定字符类,必须紧跟在插入符号之后。如果你也需要一个右方括号,那么你需要一个右方括号,然后是破折号。幸运的是,您只需要破折号,因此选择了符号。grep'^[-d]rwx.*[0-9]$'"$@"见:RegularExpressions和g

linux - 使用 grep 和 sed 查找和替换字符串

我正在使用以下内容递归搜索目录以查找特定字符串并将其替换为另一个:grep-rloldstrpath|xargssed-i's/oldstr/newstr/g'这工作正常。唯一的问题是,如果字符串不存在,那么sed会失败,因为它没有得到任何参数。这对我来说是个问题,因为我使用ANT自动运行它并且构建失败,因为sed失败。有没有办法让它在找不到字符串的情况下防故障?我对我可以使用的单行简单解决方案感兴趣(不一定使用grep或sed而是使用像这些常见的unix命令)。 最佳答案 你可以直接在sed中使用find和-exec,而不是先用定

linux - 在 grep 中转义双引号

我想对里面有双引号的关键字做grep。举个简单的例子:echo"member":"time"|grep-e"member\""这不匹配。我该如何解决? 最佳答案 问题是你没有正确转义输入字符串,试试:echo"\"member\":\"time\""|grep-e"member\""或者,您可以在单引号内使用未转义的双引号:echo'"member":"time"'|grep-e'member"'虽然第二种方法会阻止您将命令嵌套在另一组单引号中(例如ssh'cmd'),但您会发现这是一个更清楚的偏好问题。