我有一个文件,我想在其中查找以-rwx或drwx开头并以任意数字结尾的行。我有这个,但它不太正确。有什么想法吗?grep[^.rwx]*[0-9]usrLog.txt 最佳答案 棘手的部分是一个正则表达式,它包含一个破折号作为字符类中的有效字符之一。对于(正常)字符类,破折号必须紧跟在开始之后,对于否定字符类,必须紧跟在插入符号之后。如果你也需要一个右方括号,那么你需要一个右方括号,然后是破折号。幸运的是,您只需要破折号,因此选择了符号。grep'^[-d]rwx.*[0-9]$'"$@"见:RegularExpressions和g
我正在使用以下内容递归搜索目录以查找特定字符串并将其替换为另一个:grep-rloldstrpath|xargssed-i's/oldstr/newstr/g'这工作正常。唯一的问题是,如果字符串不存在,那么sed会失败,因为它没有得到任何参数。这对我来说是个问题,因为我使用ANT自动运行它并且构建失败,因为sed失败。有没有办法让它在找不到字符串的情况下防故障?我对我可以使用的单行简单解决方案感兴趣(不一定使用grep或sed而是使用像这些常见的unix命令)。 最佳答案 你可以直接在sed中使用find和-exec,而不是先用定
我想对里面有双引号的关键字做grep。举个简单的例子:echo"member":"time"|grep-e"member\""这不匹配。我该如何解决? 最佳答案 问题是你没有正确转义输入字符串,试试:echo"\"member\":\"time\""|grep-e"member\""或者,您可以在单引号内使用未转义的双引号:echo'"member":"time"'|grep-e'member"'虽然第二种方法会阻止您将命令嵌套在另一组单引号中(例如ssh'cmd'),但您会发现这是一个更清楚的偏好问题。
我正在尝试在所有与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
已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎与aspecificprogrammingproblem,asoftwarealgorithm,orsoftwaretoolsprimarilyusedbyprogrammers无关.如果您认为该问题将成为anotherStackExchangesite上的主题,您可以发表评论,说明在哪里可以回答问题。关闭12个月前。社区审核了是否要重新打开这个问题9个月前并关闭它:原始关闭原因未解决Improvethisquestion这不会产生任何输出。怎么会?$echo'this123'|grep'
我想说grep最多10行。我不想让我的电脑辛苦工作。我希望它在grep找到10个结果后停止。有可能吗? 最佳答案 -m选项可能正是您要找的:grep-m10PATTERN[FILE]来自mangrep:-mNUM,--max-count=NUMStopreadingafileafterNUMmatchinglines.Iftheinputisstandardinputfromaregularfile,andNUMmatchinglinesareoutput,grepensuresthatthestandardinputisposit
我正在尝试使用命令搜索字符串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*
使用xenserver,我想对目录中的每个文件执行命令,从命令的输出中提取一些内容并将其附加到文件中。我很清楚我想使用的命令以及如何根据需要grep字符串。但我不清楚的是如何让它对每个文件执行此命令,然后转到下一个文件,直到找不到更多文件。 最佳答案 grep$PATTERN*就足够了。默认情况下,grep会跳过所有子目录。但是,如果你想通过它们grep,grep-r$PATTERN*就是这样。 关于linux-如何对目录中的所有文件执行grep操作?,我们在StackOverflow上
这个问题在这里已经有了答案:Colorizedgrep--viewingtheentirefilewithhighlightedmatches(24个回答)关闭6年前。使用grep时,它会突出显示与您的正则表达式匹配的行中的任何文本。如果我想要这种行为,但也让grep打印出所有行怎么办?快速浏览了grep手册页后,我发现空空如也。 最佳答案 使用确认。在此处查看其--passthru选项:ack.它具有允许完整的perl正则表达式的额外好处。$ack--passthru'pattern1'file_name$command_here
我有一个包含以下数据的文件:otherdatauser1=name1user2=name2user3=name3otherdata为了提取名称,我执行以下操作names=File.open('resource.cfg','r')do|f|f.grep(/[a-z][a-z][0-9]/)end返回以下数组user1=name1user2=name2user3=name3但我真的只想要名字部分name1name2name3现在我在文件步骤之后这样做:names=names.mapdo|name|name[7..9]end有更好的方法吗?使用文件步骤 最佳答案