字符串查找

http://blog.csdn.net/yuanfeiyan/article/details/2176270

grep -n "str" -r ./
这是查找当前目录下以及下辖子目录下所有包含str字符串的文件,会列出文件名.以及该行的内容.以及行号 

http://www.cnblogs.com/taosim/admin/EditArticles.aspx?postid=2729633

在特定文件中grep某关键字,除了使用find 命令加exec选项之外,其实还有更简单的方法:

grep -R --include="*.cpp" key dir

上述命令的含义:

在dir目录下递归查找所有.cpp文件中的关键字key

 

明确要求搜索子目录:grep -r
或忽略子目录:grep -d skip
当然,如果预料到有许多输出,您可以通过 管道 将其转到‘less’上阅读:

$ grep magic /usr/src/linux/Documentation/* | less

 

http://soft.chinabyte.com/os/375/12415875.shtml

单个文件中查找替换很简单,就不说了。文件夹下所有文件中字符串的查找替换就要记忆了,最近部署几十台linux服务器,记录下总结。

  查找文件夹下包含字符串的文件

  例:查找/usr/local目录下所有包含“rubyer.me”的文件。

  1 grep -lr 'rubyer.me' /usr/local/*

  vim替换单个文件中所有字符串方法

  例:替换当前文件中所有old为new

  1 :%s/old/new/g

  2

  #%表示替换说有行,g表示替换一行中所有匹配点。

  替换文件夹下包含字符串的文件

  sed结合grep

  例:要将目录/www下面所有文件中的zhangsan都修改成lisi,这样做:

  1 sed -i “s/old/new/g” `grep old -rl /www`

 

http://rubyer.me/blog/1613/

 

Linux查找和替换目录下所有文件中字符串

三 9th, 2012
 

单个文件中查找替换很简单,就不说了。文件夹下所有文件中字符串的查找替换就要记忆了,最近部署几十台linux服务器,记录下总结。

查找文件夹下包含字符串的文件

例:查找/usr/local目录下所有包含”rubyer.me”的文件。

grep -lr 'rubyer.me' /usr/local/*

vim替换单个文件中所有字符串方法

例:替换当前文件中所有old为new

:%s/old/new/g
#%表示替换说有行,g表示替换一行中所有匹配点。

替换文件夹下包含字符串的文件

sed结合grep
例:要将目录/www下面所有文件中的zhangsan都修改成lisi,这样做:

sed -i "s/old/new/g" `grep old -rl /www`


http://blog.sina.com.cn/s/blog_4e0869690100z2ft.html
1. set命令可以显示出当前shell下所有全局参量定义及其值;

2. 查找并删除当前目录下小文件:
find . -type f -size -10k -exec rm {} \;
说明:
-type f 查找文件
-size -10k,
小于10k的。"+"是表示要求系统只列出大于指定大小的文件,而使用"-"则表示要求系统列出小于指定大小的文件。

3. 遍历文件夹grep一个字符串
find . -name "*c" | xargs grep "strings"

在当前文件夹下所有c文件中查找字符串“string”

4. 在某目录下文件中查找某字符串
grep -r youcode dir
例如:查找home下文件中查找hello
grep -r hello /home

例如:在当前所有目录下文件中查找hello,不区分大小写
grep -ir hello .

 

http://blog.csdn.net/rcxqc2002/article/details/4471078

查找目录中文件的字符串 grep -n "str" -r ./ 这是查找当前目录下以及下辖子目录下所有包含str字符串的文件




如何用grep在本目录及其所有的子目录下的文件里面查找字符串abc?

grep -R abc *

要找隐藏文件,可以:
grep -R abc * .*


find ./ -type f|xargs grep abc


以前写的一个小脚本,不过没用grep,不知是否合lz用

#!/bin/bash
# create by krqi ^_^,glade to help u :) 
find . -type f -exec gawk 'BEGIN{n=0} {if($0~/'"$1"'/){a[n++]=FNR" "$0}}END{if(n>0){print(FILENAME);for(i=0;i<n;++i)print a;}}' {} /; 2>/dev/null


打印当前目录下文件中包含指定的字符串信息,
首先打印文件名,然后打印所查找的字符串在该文件中的行号并打印出该行。
希望对大家工作有所帮助:)

用法: 比如你把它存为 myfind,然后这样使用
myfind "what u want find"

然后就把当前目录下(包含子目录),所有包含"what u want find"的信息打印出来了:)

 

http://www.phpzixue.cn/detail1141.shtml

linux下查找某目录下所有文件包含某字符串的命令: 
从文件内容查找匹配指定字符串的行: 
$ grep "被查找的字符串" 文件名 
从文件内容查找与正则表达式匹配的行: 
$ grep –e “正则表达式” 文件名 
查找时不区分大小写: 
$ grep –i "被查找的字符串" 文件名 
查找匹配的行数: 
$ grep -c "被查找的字符串" 文件名 
从文件内容查找不匹配指定字符串的行: 
$ grep –v "被查找的字符串" 文件名 
从根目录开始查找所有扩展名为.txt的文本文件,并找出包含"phpzixue.cn"的行 
find . -type f -name "*.txt" | xargs grep "phpzixue.cn" 


http://liuzhiqiangruc.iteye.com/blog/1271155

有时候,我们要简单统计下一个文件中包含某个特殊字符串的行数。

我第一个想到的是grep + wc,不知道你想到了什么,不过,我们确实有多种方法。

 

假如我们的文件叫msg,里面有23380092行数据。

某些行是这样的receive: msg1

我们的任务是找出这些行的数量。

 

1. grep方法

grep ' msg1' msg | wc -l

使用这种方法耗时: 1s

 

2. awk方法

awk 'BEGIN{c=1}{if($0 ~ / msg1/) c=c+1}END{print c}' msg

使用这种方法耗时:8s

 

3. 另一种awk方法

awk 'BEGIN{FS=":";c=0;}{if($2 == " msg1") c=c+1}END{print c}' msg

使用这种方法耗时:14s

 

4. 文件描述符打开文件遍历

 

Shell代码  收藏代码
  1. #!/bin/bash  
  2. count=0;  
  3. exec 4<msg  
  4. while read line<&4  
  5. do  
  6. if [ "$line" == "receive: msg1" ]; then  
  7.     count=$((count+1))  
  8. fi  
  9. done  
  10. exec 4<&-  
  11. echo $count;  

 我日,这种方法我跑了N久都没有出结果,效率差到无法忍受。

当然脚本本身的正确性,是通过小文件测试过得。

 

以上几种方法,grep的效率简直神了。这么多数据筛选出来,再有wc统计之后,一共只需要1秒。

而采取自己遍历文件的方法,无论是awk还是自己写脚本打开文件,效率都极差。

 

看来,我们还是懒一点的好。呵呵。





posted @ 2012-10-18 15:49  陳聽溪  阅读(444)  评论(0)    收藏  举报