草庐IT

grepping

全部标签

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'),但您会发现这是一个更清楚的偏好问题。

regex - 使用 "|"替代运算符进行 grepping

以下是名为AT5G60410.gff的大文件的示例:Chr5TAIR10gene2429489024301147.+.ID=AT5G60410;Note=protein_coding_gene;Name=AT5G60410Chr5TAIR10mRNA2429489024301147.+.ID=AT5G60410.1;Parent=AT5G60410;Name=AT5G60410.1;Index=1Chr5TAIR10protein2429522624300671.+.ID=AT5G60410.1-Protein;Name=AT5G60410.1;Derives_from=AT5G604

linux - 命令行 : search and replace in all filenames matched by grep

我正在尝试在所有与grep匹配的文件中搜索和替换字符串:grep-n'foo'*将以以下形式给我输出:[filename]:[linenumber]:[text]对于grep返回的每个文件,我想通过将foo替换为bar来修改文件。 最佳答案 根据您提供的示例,这似乎是您想要的:sed-i's/foo/bar/g'*它不是递归的(它不会下降到子目录中)。对于在整个树中替换选定文件的一个很好的解决方案,我会使用find:find.-name'*.html'-print-execsed-i.bak's/foo/bar/g'{}\;*.ht

linux - grep 的基本表达式不支持\d 吗?

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎与aspecificprogrammingproblem,asoftwarealgorithm,orsoftwaretoolsprimarilyusedbyprogrammers无关.如果您认为该问题将成为anotherStackExchangesite上的主题,您可以发表评论,说明在哪里可以回答问题。关闭12个月前。社区审核了是否要重新打开这个问题9个月前并关闭它:原始关闭原因未解决Improvethisquestion这不会产生任何输出。怎么会?$echo'this123'|grep'

linux - 如何限制从 grep 返回的结果数?

我想说grep最多10行。我不想让我的电脑辛苦工作。我希望它在grep找到10个结果后停止。有可能吗? 最佳答案 -m选项可能正是您要找的:grep-m10PATTERN[FILE]来自mangrep:-mNUM,--max-count=NUMStopreadingafileafterNUMmatchinglines.Iftheinputisstandardinputfromaregularfile,andNUMmatchinglinesareoutput,grepensuresthatthestandardinputisposit

linux - 使用 grep 搜索包含点的字符串

我正在尝试使用命令搜索字符串0.49(带点)grep-r"0.49"*但是发生的事情是我也得到了不需要的结果,其中包含0449、0949等字符串。问题是linux将dot(.)视为任何字符并显示所有结果。但我只想得到“0.49”的结果。 最佳答案 grep使用正则表达式;.表示正则表达式中的“任何字符”。如果您需要文字字符串,请使用grep-F、fgrep或将.转义为\.。不要忘记将字符串用双引号括起来。否则你应该使用\\.所以,你的命令需要是:grep-r"0\.49"*或grep-r0\\.49*或grep-Fr0.49*

linux - 如何对目录中的所有文件执行grep操作?

使用xenserver,我想对目录中的每个文件执行命令,从命令的输出中提取一些内容并将其附加到文件中。我很清楚我想使用的命令以及如何根据需要grep字符串。但我不清楚的是如何让它对每个文件执行此命令,然后转到下一个文件,直到找不到更多文件。 最佳答案 grep$PATTERN*就足够了。默认情况下,grep会跳过所有子目录。但是,如果你想通过它们grep,grep-r$PATTERN*就是这样。 关于linux-如何对目录中的所有文件执行grep操作?,我们在StackOverflow上