黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 操作系统 >> LINIX UNIX >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[推荐]使用Linux 文本工具简化数据的提取
      ★★★

使用Linux 文本工具简化数据的提取

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-10-4 10:29:17

  fgrep

  fgrep 会对文件搜索某个字符串,并打印包含这个字符串的所有行的内容。与 grep 不同的是,fgrep 搜索的是一个字符串,而不是可以匹配某个表达式的一种模式。fgrep 可以看作是 grep 在以下方面进行了增强:

  • 一次可以搜索多个对象。
  • fgrep 工具通常速度都比 grep 更快。
  • 我们不能使用 fgrep 来搜索使用模式的正则表达式。

  假设我们希望从前面的 memo 文件中提取全部由大写字母组成的名字。为了查找 “STEPHEN” 和 “BRIAN”,我们需要执行两个单独的 grep 命令,如下所示:

# grep STEPHEN memo 
3. STEPHEN FLEMING 

# grep BRIAN memo 
6. BRIAN LARA 

  使用 fgrep,只需要一个命令就可以实现相同的任务:

# fgrep "STEPHEN 
> BRIAN" memo 
3. STEPHEN FLEMING 
6. BRIAN LARA 

  注意在这两项之间需要使用回车符号。如果没有这个回车符号,搜索就变成了查找一行中的 “STEPHEN BRIAN”。有了这个回车符号之后,它就会查找 “STEPHEN” 的匹配项,以及匹配 “BRIAN” 的项。

  还要注意在目标文本两侧必须要放上引号。这样可以将文本与文件名区分开来。

  除了在命令行上指定搜索项之外,我们也可以将它们放到一个文件中,并使用这个文件的内容来搜索其他文件。-f 选项让我们可以指定一个包含搜索项的主文件,其中可以列出经常搜索的内容。

  举例来说,我们可以想像一个名为 “search_items” 的文件,其中包含了我们希望搜索的两项内容:

# cat search_items 
STEPHEN 
BRIAN 

  下面的命令在前面的 memo 文件中搜索 “STEPHEN” 和 “BRIAN”:

# fgrep -f search_items memo 
3. STEPHEN FLEMING 
6. BRIAN LARA 

  egrep

  egrep 是 grep 的一个功能更加强大的版本,它让我们可以一次搜索多个对象。要搜索的对象是使用回车符(与 fgrep 一样)或管道符(|)来分隔的。

# egrep "STEPHEN 
> BRIAN" memo 
3. STEPHEN FLEMING 
6. BRIAN LARA 

# egrep "STEPHEN | BRIAN" memo 
3. STEPHEN FLEMING 
6. BRIAN LARA 

  上面这两个命令都可以完成相同的工作。

  除了搜索多个目标的功能之外,egrep 还提供了重复搜索和分组搜索的功能:

  • ? 查找问号前面字符的零次匹配或一次匹配。
  • + 查找加号前面字符的一次或多次匹配。
  • ( ) 表示一个分组。

  例如,假设您不记得 Brian 的姓是 “Lara” 还是 “Laras”。

# egrep "LARAS?" memo 
6. BRIAN LARA 

  这次搜索会输出同时匹配 “LARA” 和 “LARAS” 的项。下面的搜索稍微有些不同:

# egrep "STEPHEN+" memo 
3. STEPHEN FLEMING 

  它可以与 “STEPHEN”、“STEPHENN”、“STEPHENNN” 等匹配。

  如果您正在查找一个单词加上它的一个派生词,可以在圆括号中包含派生词的标志字符。

# egrep -i "electron(ic)?s" memo 
Sachin Tendulkar, who joins us from XYZ Consumer 
Electronics as a national account manager covering 
traditional mass merchants. 

  这会查找可以匹配 “electrons” 的项和可以匹配 “electronics” 的项。

  总结一下:

  • + 号后面的正则表达式可以匹配这个正则表达式的一次或多次出现。

  • ? 号后面的正则表达式可以匹配这个正则表达式的零次或一次出现。

  • 使用 | 符号或回车符分隔开的正则表达式会返回可以与任意一个表达式匹配的字符串。

  • 正则表达式可以放到圆括号 ( ) 中进行分组。

  • 我们可以使用的命令行参数包括 -c-f-i-l-n-v

  grep 工具:一个真实的例子

  grep 系列工具可以用于任何文本格式的系统文件,以便查找某行中的匹配项。例如,要在 /etc/passwd 文件中查找用户 “root” 的项,可以使用下面的命令:

# grep root /etc/passwd 
root:x:0:0:root:/root:/bin/bash 
operator:x:11:0:operator:/root:/sbin/nologin 

  由于 grep 会查找这个文件中的某个匹配项,因此这个命令会查找到 “root” 和 “operator” 这两项。如果我们希望只查找用户名为 “root” 的项,可以将这个命令修改成下面的样子:

# grep "^root" /etc/passwd 
root:x:0:0:root:/root:/bin/bash 

 
文章录入:sygbox    责任编辑:sygbox 
【字体:
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886