Tag: grep

使用grep匹配不同可能性的string

我想看看,如果在0和1的4个字符的string中出现"001"或"100"或"000" 。 例如,一个4个字符的string可以像"1100"或"0010"或"1001"或"1111" 。 如何用单个命令匹配string中的许多string? 我知道grep可以用于模式匹配,但是使用grep,我一次只能检查一个string。 我想知道是否可以使用多个string与其他命令或使用grep本身。

我如何在UNIX中对所有非A​​SCII字符进行grep

我有几个非常大的XML文件,我试图find包含非ASCII字符的行。 我已经尝试了以下内容: grep -e "[\x{00FF}-\x{FFFF}]" file.xml 但是这将返回文件中的每一行,而不pipe该行是否包含指定范围内的字符。 我的语法错了吗?还是我在做其他的错误? 我也试过: egrep "[\x{00FF}-\x{FFFF}]" file.xml (包含模式的单引号和双引号)。

如何在文件中search多行模式?

我需要find所有包含特定string模式的文件。 首先想到的解决scheme是使用xargs greppipe道查找 : find . -iname '*.py' | xargs grep -e 'YOUR_PATTERN' 但是,如果我需要find跨越多行的模式,我会卡住,因为香草grep找不到多行模式。

在bash中,当参数作为variables传递给它们时,为什么shell命令在参数中忽略引号?

这工作如广告: # example 1 #!/bin/bash grep -ir 'hello world' . 这不: # example 2 #!/bin/bash argumentString="-ir 'hello world'" grep $argumentString . 尽pipe在第二个例子中引用了'hello world' ,但是grep将'hello as one argument and world'为另一个,这意味着在这种情况下, 'hello将是search模式, world'将成为searchpath。 同样,只有当参数从argumentStringvariables扩展时才会发生这种情况。 在第一个例子中,grep正确地将'hello world'为单个参数。 任何人都可以解释为什么这是? 有没有适当的方法来扩展一个stringvariables,将保留每个字符的语法,使其正确解释的shell命令?

如何从命令行将每两行合并成一行?

我有一个以下格式的文本文件。 第一行是“KEY”,第二行是“VALUE”。 KEY 4048:1736 string 3 KEY 0:1772 string 1 KEY 4192:1349 string 1 KEY 7329:2407 string 2 KEY 0:1774 string 1 我需要和键一样的值。 所以输出应该是这样的… KEY 4048:1736 string 3 KEY 0:1772 string 1 KEY 4192:1349 string 1 KEY 7329:2407 string 2 KEY 0:1774 string 1 如果我可以使用一些分隔符如$或KEY 4048:1736string3,会更好 如何将两行合并成一行?

grep只能显示匹配search模式的文字吗?

有没有办法让grep输出符合searchexpression式的文件的“单词”? 如果我想在许多文件中find所有“th”的实例,我可以这样做: grep "th" * 但是输出结果会像(大胆的是我); 一些文本文件:猫坐在垫子上 一些其他的文本文件:快速的棕色狐狸 另一个文本文件:我希望这个解释彻底 我想要它输出,使用相同的search,是: the the the this thoroughly 这可能使用grep? 或者使用其他工具组合?

如何“grep”连续的stream?

有可能使用连续stream的grep ? 我的意思是一个tail -f <file>命令,但输出为了保留只有我感兴趣的线的grep 。 我试过tail -f <file> | grep pattern tail -f <file> | grep pattern但似乎grep只能执行一次tail完成,也就是说永远不会。

正则expression式(grep)用于多行search需要

可能重复: 如何在文件中search多行模式? 使用pcregrep 我正在运行一个grep来查找任何* .sql文件,它包含单词select后跟单词customerName后跟单词from 。 这个select语句可以跨越多行,可以包含制表符和换行符。 我已经尝试了以下几个变化: $ grep -liIr –include="*.sql" –exclude-dir="\.svn*" –regexp="select[a-zA-Z0- 9+\n\r]*customerName[a-zA-Z0-9+\n\r]*from" 然而,这只是永远运行。 任何人都可以帮助我正确的语法吗?

如何在Linux上查找包含特定文本的所有文件?

我试图find一种方法来扫描我的整个Linux系统的所有文件包含特定的文本string。 只是为了澄清,我正在寻找文件中的文本,而不是在文件名。 当我正在查找如何做到这一点时,我遇到了这个解决scheme两次: find / -type f -exec grep -H 'text-to-find-here' {} \; 但是,它不起作用。 它似乎显示在系统中的每个单个文件。 这是否接近正确的方式来做到这一点? 如果不是,我该怎么办? 这种在文件中查找文本string的function对于我正在进行的一些编程项目来说是非常有用的。

可开发的PHP函数

我试图build立一个可以用于任意代码执行的函数列表。 目的不是列出应被列入黑名单或不允许的function。 相反,我希望在search受感染的服务器后门时,可以方便地使用可用的红旗标记关键字列表。 这个想法是,如果你想构build一个多用途的恶意PHP脚本 – 比如像c99或r57这样的“web shell”脚本,你将不得不使用一个或者多个相对较小的一组函数在文件某处为了让用户执行任意代码。 search这些函数可以帮助您更快地将数以万计的PHP文件的大堆缩小到需要仔细检查的相对较小的脚本集。 很明显,例如,以下任何一种都被认为是恶意的(或可怕的编码): <? eval($_GET['cmd']); ?> <? system($_GET['cmd']); ?> <? preg_replace('/.*/e',$_POST['code']); ?> 等等。 有一天我search了一个受到攻击的网站,但是我没有注意到一个恶意代码,因为我没有意识到preg_replace可能会被/e标志使用( 这是严重的,为什么在那里 ? 。 还有其他的我错过了吗? 这是我的列表到目前为止: shell执行 system exec popen backtick operator pcntl_exec PHP执行 eval preg_replace (带/e修饰符) create_function include [ _once ] / require [ _once ]( 请参阅mario的漏洞利用细节的答案 ) 有一个能够修改文件的函数列表也许是有用的,但我想99%的时间利用代码将至less包含上述function之一。 但是如果你有一个能够编辑或输出文件的所有function的列表,发布它,我会在这里包括它。 (而且我不计算mysql_execute ,因为这是另一类漏洞利用的一部分。)